[clang] modified AST for SEI redemption project (PR #111705)
Nicholas Reimer via cfe-commits
cfe-commits at lists.llvm.org
Tue Jul 8 17:54:39 PDT 2025
https://github.com/sei-nreimer updated https://github.com/llvm/llvm-project/pull/111705
>From 64ead42b291bd23bf47a37d6bcd6dea6b367e760 Mon Sep 17 00:00:00 2001
From: Nicholas Reimer <nreimer at sei.cmu.edu>
Date: Tue, 8 Oct 2024 16:40:58 -0600
Subject: [PATCH 1/2] modified AST for SEI redemption project
---
clang/include/clang/AST/ASTNodeTraverser.h | 59 +++++++++-
clang/include/clang/AST/JSONNodeDumper.h | 45 +++++++-
clang/include/clang/AST/TextNodeDumper.h | 22 ++++
clang/lib/AST/JSONNodeDumper.cpp | 124 ++++++++++++++++++++-
clang/lib/AST/TextNodeDumper.cpp | 8 ++
clang/unittests/AST/ASTTraverserTest.cpp | 4 +
6 files changed, 252 insertions(+), 10 deletions(-)
diff --git a/clang/include/clang/AST/ASTNodeTraverser.h b/clang/include/clang/AST/ASTNodeTraverser.h
index a443a88bab1f2..3299011771f33 100644
--- a/clang/include/clang/AST/ASTNodeTraverser.h
+++ b/clang/include/clang/AST/ASTNodeTraverser.h
@@ -11,6 +11,22 @@
// similar to RecursiveASTVisitor.
//
//===----------------------------------------------------------------------===//
+//
+// Modifications to this file by SEI staff are copyright Carnegie Mellon
+// University and contributed under the Apache License v2.0 with LLVM
+// Exceptions.
+//
+// SEI Contributions are made with funding sand support from the Department of
+// Defense under Contract No. FA8702-15-D-0002 with Carnegie Mellon University
+// for the operation of the Software Engineering Institute, a federally funded
+// research and development center.
+//
+// The view, opinions, and/or findings contained in this material are those of
+// the author(s) and should not be construed as an official Government position,
+// policy, or decision, unless designated by other documentation.
+// DM24-0194
+//
+//===----------------------------------------------------------------------===//
#ifndef LLVM_CLANG_AST_ASTNODETRAVERSER_H
#define LLVM_CLANG_AST_ASTNODETRAVERSER_H
@@ -177,14 +193,34 @@ class ASTNodeTraverser
if (!SQT.Quals.hasQualifiers())
return Visit(SQT.Ty);
- getNodeDelegate().AddChild([=] {
+ // SEI: changed from default label to "qualTypeDetail"
+ getNodeDelegate().AddChild("qualTypeDetail", [this, T] {
getNodeDelegate().Visit(T);
Visit(T.split().Ty);
});
+
+ // SEI function pointer support. this gets called whenever the three
+ // conditions are met:
+ // 1. the function pointer is not typedef'd
+ // 2. after Visit(VarDecl *) gets called
+ // 3. if VarDecl determines this is a function pointer
+ if (T->isFunctionPointerType()) {
+ // create as a child node to this type
+ getNodeDelegate().AddChild(
+ [=] { getNodeDelegate().Visit(T->getPointeeType()); });
+ }
+
+ // SEI: traverse PointerType information
+ if (T->isPointerType())
+ Visit(T->getPointeeType());
}
+ // SEI: traverse ReturnType information
+ void VisitReturnType(QualType T) { getNodeDelegate().VisitReturnType(T); }
+
void Visit(const Type *T) {
- getNodeDelegate().AddChild([=] {
+ // SEI: renamed this from default label
+ getNodeDelegate().AddChild("typeDetails", [this, T] {
getNodeDelegate().Visit(T);
if (!T)
return;
@@ -209,7 +245,8 @@ class ASTNodeTraverser
}
void Visit(const Attr *A) {
- getNodeDelegate().AddChild([=] {
+ // SEI: renamed from default label
+ getNodeDelegate().AddChild("attrDetails", [this, A] {
getNodeDelegate().Visit(A);
ConstAttrVisitor<Derived>::Visit(A);
});
@@ -410,8 +447,17 @@ class ASTNodeTraverser
Visit(T->getSizeExpr());
}
void VisitVectorType(const VectorType *T) { Visit(T->getElementType()); }
- void VisitFunctionType(const FunctionType *T) { Visit(T->getReturnType()); }
+ void VisitFunctionType(const FunctionType *T) {
+ // SEI: add functionDetails, incl. return type
+ getNodeDelegate().AddChild("functionDetails", [this, T] {
+ getNodeDelegate().VisitFunctionType(T);
+ getNodeDelegate().VisitReturnType(T->getReturnType());
+ });
+ }
+
void VisitFunctionProtoType(const FunctionProtoType *T) {
+
+ // SEI: visit the function type. this will force the return type info too.
VisitFunctionType(T);
for (const QualType &PT : T->getParamTypes())
Visit(PT);
@@ -560,6 +606,11 @@ class ASTNodeTraverser
Visit(TSI->getTypeLoc());
if (D->hasInit())
Visit(D->getInit());
+
+ // SEI: if this is a function pointer, then we need to get the
+ // FunctionProtoType and then make add'l visits. if the FP is typedef'd,
+ // then this behavior occurs for us outside of Visit(VarDecl *)
+ getNodeDelegate().Visit(D->getType());
}
void VisitDecompositionDecl(const DecompositionDecl *D) {
diff --git a/clang/include/clang/AST/JSONNodeDumper.h b/clang/include/clang/AST/JSONNodeDumper.h
index 9422c8fceccfb..25cec3abcbae8 100644
--- a/clang/include/clang/AST/JSONNodeDumper.h
+++ b/clang/include/clang/AST/JSONNodeDumper.h
@@ -10,6 +10,22 @@
// a JSON.
//
//===----------------------------------------------------------------------===//
+//
+// Modifications to this file by SEI staff are copyright Carnegie Mellon
+// University and contributed under the Apache License v2.0 with LLVM
+// Exceptions.
+//
+// SEI Contributions are made with funding sand support from the Department of
+// Defense under Contract No. FA8702-15-D-0002 with Carnegie Mellon University
+// for the operation of the Software Engineering Institute, a federally funded
+// research and development center.
+//
+// The view, opinions, and/or findings contained in this material are those of
+// the author(s) and should not be construed as an official Government position,
+// policy, or decision, unless designated by other documentation.
+// DM24-0194
+//
+//===----------------------------------------------------------------------===//
#ifndef LLVM_CLANG_AST_JSONNODEDUMPER_H
#define LLVM_CLANG_AST_JSONNODEDUMPER_H
@@ -26,6 +42,9 @@
#include "clang/AST/Type.h"
#include "llvm/Support/JSON.h"
+// SEI: added for caching addresses of certain visited nodes
+#include <unordered_set>
+
namespace clang {
class APValue;
@@ -111,8 +130,8 @@ class NodeStreamer {
// Dumps AST nodes in JSON format. There is no implied stability for the
// content or format of the dump between major releases of Clang, other than it
// being valid JSON output. Further, there is no requirement that the
-// information dumped is a complete representation of the AST, only that the
-// information presented is correct.
+// information dumped be a complete representation of the AST, only that the
+// information presented be correct.
class JSONNodeDumper
: public ConstAttrVisitor<JSONNodeDumper>,
public comments::ConstCommentVisitor<JSONNodeDumper, void,
@@ -132,6 +151,9 @@ class JSONNodeDumper
StringRef LastLocFilename, LastLocPresumedFilename;
unsigned LastLocLine, LastLocPresumedLine;
+ // SEI: caches addresses for QualType nodes that are duplicates
+ std::unordered_set<void *> AddressCache;
+
using InnerAttrVisitor = ConstAttrVisitor<JSONNodeDumper>;
using InnerCommentVisitor =
comments::ConstCommentVisitor<JSONNodeDumper, void,
@@ -184,6 +206,18 @@ class JSONNodeDumper
StringRef getCommentCommandName(unsigned CommandID) const;
+ /// SEI: simple cacher for addresses of nodes to reduce
+ /// bloat caused by SEI changes
+ /// Return True if it's already cached, otherwise false
+ bool cacheAddress(void *p) {
+ if (AddressCache.find(p) == AddressCache.end()) {
+ AddressCache.insert(p);
+ return false;
+ }
+
+ return true;
+ }
+
public:
JSONNodeDumper(raw_ostream &OS, const SourceManager &SrcMgr, ASTContext &Ctx,
const PrintingPolicy &PrintPolicy,
@@ -196,6 +230,13 @@ class JSONNodeDumper
void Visit(const Stmt *Node);
void Visit(const Type *T);
void Visit(QualType T);
+
+ // SEI: get specific details from the qual type
+ void VisitQualTypeDetails(QualType T);
+
+ // SEI: traverse ReturnType information
+ void VisitReturnType(QualType T);
+
void Visit(const Decl *D);
void Visit(TypeLoc TL);
diff --git a/clang/include/clang/AST/TextNodeDumper.h b/clang/include/clang/AST/TextNodeDumper.h
index 9c320c8ae3e54..89f0fb110b31a 100644
--- a/clang/include/clang/AST/TextNodeDumper.h
+++ b/clang/include/clang/AST/TextNodeDumper.h
@@ -9,6 +9,22 @@
// This file implements AST dumping of components of individual AST nodes.
//
//===----------------------------------------------------------------------===//
+//
+// Modifications to this file by SEI staff are copyright Carnegie Mellon
+// University and contributed under the Apache License v2.0 with LLVM
+// Exceptions.
+//
+// SEI Contributions are made with funding sand support from the Department of
+// Defense under Contract No. FA8702-15-D-0002 with Carnegie Mellon University
+// for the operation of the Software Engineering Institute, a federally funded
+// research and development center.
+//
+// The view, opinions, and/or findings contained in this material are those of
+// the author(s) and should not be construed as an official Government position,
+// policy, or decision, unless designated by other documentation.
+// DM24-0194
+//
+//===----------------------------------------------------------------------===//
#ifndef LLVM_CLANG_AST_TEXTNODEDUMPER_H
#define LLVM_CLANG_AST_TEXTNODEDUMPER_H
@@ -183,6 +199,12 @@ class TextNodeDumper
void Visit(TypeLoc);
+ // SEI: added support for getting ReturnType information
+ void VisitReturnType(QualType T);
+
+ // SEI: added support for more QT details. it's a passthrough for this class
+ void VisitQualTypeDetails(QualType T) {}
+
void Visit(const Decl *D);
void Visit(const CXXCtorInitializer *Init);
diff --git a/clang/lib/AST/JSONNodeDumper.cpp b/clang/lib/AST/JSONNodeDumper.cpp
index ddbe2136a671f..72b2c2b9b8aa8 100644
--- a/clang/lib/AST/JSONNodeDumper.cpp
+++ b/clang/lib/AST/JSONNodeDumper.cpp
@@ -71,6 +71,19 @@ void JSONNodeDumper::Visit(const Stmt *S) {
}
void JSONNodeDumper::Visit(const Type *T) {
+ // SEI: ensure FPTs are debloated. this can be expanded to ALL types, if
+ // desired
+ if (T && cacheAddress((void *)T)) {
+ // add this as a child to know that it's a Type
+ AddChild("typeDetails",
+ [=] { JOS.attribute("refId", createPointerRepresentation(T)); });
+
+ InnerTypeVisitor::Visit(T);
+ // SEI
+ VisitQualTypeDetails(T->getCanonicalTypeInternal());
+ return;
+ }
+
JOS.attribute("id", createPointerRepresentation(T));
if (!T)
@@ -87,13 +100,44 @@ void JSONNodeDumper::Visit(const Type *T) {
T->containsUnexpandedParameterPack());
attributeOnlyIfTrue("isImported", T->isFromAST());
InnerTypeVisitor::Visit(T);
+ // SEI
+ VisitQualTypeDetails(T->getCanonicalTypeInternal());
}
void JSONNodeDumper::Visit(QualType T) {
- JOS.attribute("id", createPointerRepresentation(T.getAsOpaquePtr()));
- JOS.attribute("kind", "QualType");
- JOS.attribute("type", createQualType(T));
- JOS.attribute("qualifiers", T.split().Quals.getAsString());
+
+ // SEI: used AddChild to prevent qualType from being part added to a list
+ // JOS.attributeArray("qualTypes", [=] {
+
+ // SEI: force qualType into its own block, otherwise multiple Visits
+ // create a bunch of siblings, which is invalid JSON
+ JOS.attributeBegin("qualType");
+ JOS.objectBegin();
+
+ // SEI: cache visited addresses and add only its refId
+ // instead of the kind, type, quals, but leave the qual type details
+ // because those can differ among IDs
+ if (cacheAddress(T.getAsOpaquePtr())) {
+ JOS.attribute("refId", createPointerRepresentation(T.getAsOpaquePtr()));
+ } else {
+ JOS.attribute("id", createPointerRepresentation(T.getAsOpaquePtr()));
+ JOS.attribute("kind", "QualType");
+ JOS.attribute("type", createQualType(T));
+ JOS.attribute("qualifiers", T.split().Quals.getAsString());
+ }
+
+ // SEI: get add'l info required for redemption analysis
+ // the qual type details differ even among cached references
+ VisitQualTypeDetails(T);
+
+ // SEI: if this is a pointer type, then recursively call ourselves
+ // until it's not
+ if (T->isPointerType())
+ Visit(T->getPointeeType());
+
+ JOS.objectEnd();
+ JOS.attributeEnd();
+ //} );
}
void JSONNodeDumper::Visit(TypeLoc TL) {
@@ -111,6 +155,64 @@ void JSONNodeDumper::Visit(TypeLoc TL) {
[TL, this] { writeSourceRange(TL.getSourceRange()); });
}
+void JSONNodeDumper::VisitQualTypeDetails(QualType T) {
+ // SEI: get more detailed info on type. this info is not transferrable
+ // with the refId, so this must be called on every type even if that type
+ // has been cached
+ JOS.attributeBegin("qualDetails");
+ JOS.arrayBegin();
+
+ auto CT = T->getCanonicalTypeInternal();
+
+ if (CT->isStructureType())
+ JOS.value("struct");
+
+ if (CT->isNullPtrType())
+ JOS.value("null");
+ if (CT->isUndeducedType())
+ JOS.value("undeduced");
+
+ if (CT->isPointerType())
+ JOS.value("ptr");
+ if (CT->isVoidType())
+ JOS.value("void");
+
+ if (CT->isSignedIntegerType())
+ JOS.value("signed");
+ if (CT->isUnsignedIntegerType())
+ JOS.value("unsigned");
+ if (CT->isIntegerType())
+ JOS.value("integer");
+ if (CT->isFloatingType())
+ JOS.value("fpp");
+ if (CT->isEnumeralType())
+ JOS.value("enum");
+ if (CT->isUnionType())
+ JOS.value("union");
+ if (CT->isFunctionPointerType())
+ JOS.value("func_ptr");
+ if (CT->isTypedefNameType())
+ JOS.value("type_def");
+ if (CT->isArrayType())
+ JOS.value("array");
+
+ JOS.arrayEnd();
+ JOS.attributeEnd();
+}
+
+// SEI: capture the return info in a nested JSON block
+void JSONNodeDumper::VisitReturnType(QualType T) {
+ // using this function allows us to easily wrap just the returnType
+ // section into its own JSON block. if we do this in ASTNodeTraverser,
+ // then the TextNodeDumper works as expected but the JSONNodeDumper
+ // rolls all siblings into the returnType node with those siblings as child
+ // nodes
+
+ JOS.attributeObject("returnTypeDetail", [=] { Visit(T); });
+
+ // Visit(T);
+}
+
void JSONNodeDumper::Visit(const Decl *D) {
JOS.attribute("id", createPointerRepresentation(D));
@@ -175,6 +277,14 @@ void JSONNodeDumper::Visit(const TemplateArgument &TA, SourceRange R,
void JSONNodeDumper::Visit(const CXXCtorInitializer *Init) {
JOS.attribute("kind", "CXXCtorInitializer");
+
+ // SEI: added id for
+ JOS.attribute("id", createPointerRepresentation(Init));
+
+ // SEI: added range for CXXCtorInitializers
+ JOS.attributeObject(
+ "range", [Init, this] { writeSourceRange(Init->getSourceRange()); });
+
if (Init->isAnyMemberInitializer())
JOS.attribute("anyInit", createBareDeclRef(Init->getAnyMember()));
else if (Init->isBaseInitializer())
@@ -958,6 +1068,10 @@ void JSONNodeDumper::VisitFieldDecl(const FieldDecl *FD) {
attributeOnlyIfTrue("modulePrivate", FD->isModulePrivate());
attributeOnlyIfTrue("isBitfield", FD->isBitField());
attributeOnlyIfTrue("hasInClassInitializer", FD->hasInClassInitializer());
+
+ // SEI: had to add this in b/c FieldDecls do not seem to call
+ // Visit(QualType)
+ Visit(FD->getType());
}
void JSONNodeDumper::VisitFunctionDecl(const FunctionDecl *FD) {
@@ -1346,6 +1460,8 @@ void JSONNodeDumper::VisitDeclRefExpr(const DeclRefExpr *DRE) {
case NOUR_Discarded: JOS.attribute("nonOdrUseReason", "discarded"); break;
}
attributeOnlyIfTrue("isImmediateEscalating", DRE->isImmediateEscalating());
+ // SEI: this doesn't call VisitNamedDecl, so we force it
+ Visit(DRE->getType());
}
void JSONNodeDumper::VisitSYCLUniqueStableNameExpr(
diff --git a/clang/lib/AST/TextNodeDumper.cpp b/clang/lib/AST/TextNodeDumper.cpp
index 15b23d60c3ffa..7d87c4d1b5eeb 100644
--- a/clang/lib/AST/TextNodeDumper.cpp
+++ b/clang/lib/AST/TextNodeDumper.cpp
@@ -241,6 +241,14 @@ void TextNodeDumper::Visit(QualType T) {
OS << " " << T.split().Quals.getAsString();
}
+void TextNodeDumper::VisitReturnType(QualType T) {
+ OS << "ReturnType";
+ dumpPointer(T.getAsOpaquePtr());
+ OS << " ";
+ dumpBareType(T, false);
+ OS << " " << T.split().Quals.getAsString();
+}
+
void TextNodeDumper::Visit(TypeLoc TL) {
if (!TL) {
ColorScope Color(OS, ShowColors, NullColor);
diff --git a/clang/unittests/AST/ASTTraverserTest.cpp b/clang/unittests/AST/ASTTraverserTest.cpp
index 8b6e3e90c0ea6..5f10b69862171 100644
--- a/clang/unittests/AST/ASTTraverserTest.cpp
+++ b/clang/unittests/AST/ASTTraverserTest.cpp
@@ -89,6 +89,10 @@ class NodeTreePrinter : public TextTreeStructure {
}
}
+ // SEI: added for class completeness
+ void VisitFunctionType(const FunctionType *T) {}
+ void VisitReturnType(QualType T) {}
+
template <typename... T> void Visit(T...) {}
};
>From 518379eccdc4a185667298dbf378338906b4cbef Mon Sep 17 00:00:00 2001
From: Nicholas Reimer <nreimer at sei.cmu.edu>
Date: Tue, 8 Jul 2025 18:53:25 -0600
Subject: [PATCH 2/2] fixed AST unit tests
---
clang/include/clang/AST/ASTNodeTraverser.h | 6 +-
clang/include/clang/AST/JSONNodeDumper.h | 4 +
clang/include/clang/AST/TextNodeDumper.h | 3 +
clang/lib/AST/JSONNodeDumper.cpp | 4 +
clang/lib/AST/TextNodeDumper.cpp | 7 +
clang/test/AST/HLSL/OutArgExpr.hlsl | 64 +-
clang/test/AST/HLSL/RWBuffer-AST.hlsl | 4 +-
clang/test/AST/HLSL/StructuredBuffer-AST.hlsl | 4 +-
.../ast-dump-comment-cbuffe-tbufferr.hlsl | 14 +-
clang/test/AST/HLSL/packoffset.hlsl | 42 +-
clang/test/AST/HLSL/pch_hlsl_buffer.hlsl | 30 +-
.../test/AST/HLSL/resource_binding_attr.hlsl | 18 +-
clang/test/AST/alignas_maybe_odr_cleanup.cpp | 2 +-
clang/test/AST/ast-dump-aarch64-sve-types.c | 28 +-
clang/test/AST/ast-dump-amdgpu-types.c | 2 +-
clang/test/AST/ast-dump-arm-attr.c | 2 +-
clang/test/AST/ast-dump-array.cpp | 16 +-
clang/test/AST/ast-dump-attr-json.cpp | 1185 +-
clang/test/AST/ast-dump-attr-type.cpp | 22 +-
clang/test/AST/ast-dump-attr.cpp | 629 +-
clang/test/AST/ast-dump-attr.m | 6 +-
clang/test/AST/ast-dump-c-attr.c | 24 +-
clang/test/AST/ast-dump-comment.cpp | 8 +-
clang/test/AST/ast-dump-concepts.cpp | 18 +-
clang/test/AST/ast-dump-constant-var.cu | 4 +-
clang/test/AST/ast-dump-coroutine.cpp | 410 +-
clang/test/AST/ast-dump-ctad-alias.cpp | 28 +-
clang/test/AST/ast-dump-decl-json.c | 4144 ++--
clang/test/AST/ast-dump-decl-json.m | 4360 ++--
clang/test/AST/ast-dump-decl-stmts.cpp | 8 +-
clang/test/AST/ast-dump-decl.c | 6 +-
clang/test/AST/ast-dump-decl.cpp | 834 +-
clang/test/AST/ast-dump-decl.m | 10 +-
clang/test/AST/ast-dump-decl.mm | 4 +-
clang/test/AST/ast-dump-default-arg-json.cpp | 4593 ++--
clang/test/AST/ast-dump-default-init-json.cpp | 1929 +-
clang/test/AST/ast-dump-expr-errors.cpp | 98 +-
clang/test/AST/ast-dump-expr-json.c | 11731 ++++-----
clang/test/AST/ast-dump-expr-json.cpp | 19580 ++++++++--------
clang/test/AST/ast-dump-expr-json.m | 10457 +++++----
clang/test/AST/ast-dump-expr.cpp | 4 +-
clang/test/AST/ast-dump-file-line-json.c | 709 +-
.../test/AST/ast-dump-for-range-lifetime.cpp | 2542 +-
clang/test/AST/ast-dump-fpfeatures.cpp | 38 +-
clang/test/AST/ast-dump-funcs-json.cpp | 2983 +--
clang/test/AST/ast-dump-funcs.cpp | 20 +-
clang/test/AST/ast-dump-functionprototype.cpp | 12 +-
clang/test/AST/ast-dump-if-json.cpp | 2468 +-
clang/test/AST/ast-dump-invalid.cpp | 14 +-
.../ast-dump-lambda-body-not-duplicated.cpp | 2 +-
clang/test/AST/ast-dump-lambda.cpp | 548 +-
clang/test/AST/ast-dump-lookups.cpp | 16 +-
clang/test/AST/ast-dump-managed-var.cu | 8 +-
clang/test/AST/ast-dump-msp430-attr.c | 2 +-
clang/test/AST/ast-dump-openmp-atomic.c | 2 +-
...nmp-begin-declare-variant-varying-return.c | 88 +-
...ast-dump-openmp-begin-declare-variant_10.c | 28 +-
...ast-dump-openmp-begin-declare-variant_11.c | 68 +-
...ast-dump-openmp-begin-declare-variant_12.c | 62 +-
...ast-dump-openmp-begin-declare-variant_13.c | 6 +-
.../ast-dump-openmp-begin-declare-variant_2.c | 8 +-
.../ast-dump-openmp-begin-declare-variant_3.c | 8 +-
.../ast-dump-openmp-begin-declare-variant_4.c | 2 +-
.../ast-dump-openmp-begin-declare-variant_5.c | 12 +-
.../ast-dump-openmp-begin-declare-variant_6.c | 6 +-
.../ast-dump-openmp-begin-declare-variant_7.c | 10 +-
.../ast-dump-openmp-begin-declare-variant_8.c | 8 +-
.../ast-dump-openmp-begin-declare-variant_9.c | 32 +-
...dump-openmp-begin-declare-variant_addr_1.c | 8 +-
...enmp-begin-declare-variant_namespace_1.cpp | 8 +-
...dump-openmp-begin-declare-variant_nested.c | 10 +-
...openmp-begin-declare-variant_reference.cpp | 118 +-
...penmp-begin-declare-variant_template_1.cpp | 30 +-
...penmp-begin-declare-variant_template_2.cpp | 60 +-
...penmp-begin-declare-variant_template_3.cpp | 603 +-
...penmp-begin-declare-variant_template_4.cpp | 14 +-
clang/test/AST/ast-dump-openmp-cancel.c | 4 +-
.../AST/ast-dump-openmp-cancellation-point.c | 4 +-
...t-dump-openmp-declare-variant-extensions.c | 30 +-
...dump-openmp-distribute-parallel-for-simd.c | 150 +-
.../ast-dump-openmp-distribute-parallel-for.c | 438 +-
.../AST/ast-dump-openmp-distribute-simd.c | 412 +-
clang/test/AST/ast-dump-openmp-distribute.c | 110 +-
clang/test/AST/ast-dump-openmp-for-simd.c | 110 +-
clang/test/AST/ast-dump-openmp-for.c | 326 +-
clang/test/AST/ast-dump-openmp-ordered.c | 90 +-
.../AST/ast-dump-openmp-parallel-for-simd.c | 432 +-
clang/test/AST/ast-dump-openmp-parallel-for.c | 432 +-
.../AST/ast-dump-openmp-parallel-sections.c | 4 +-
clang/test/AST/ast-dump-openmp-parallel.c | 4 +-
clang/test/AST/ast-dump-openmp-simd.c | 412 +-
clang/test/AST/ast-dump-openmp-target-data.c | 2 +-
.../AST/ast-dump-openmp-target-enter-data.c | 14 +-
.../AST/ast-dump-openmp-target-exit-data.c | 14 +-
...ast-dump-openmp-target-parallel-for-simd.c | 1842 +-
.../AST/ast-dump-openmp-target-parallel-for.c | 1842 +-
.../AST/ast-dump-openmp-target-parallel.c | 68 +-
clang/test/AST/ast-dump-openmp-target-simd.c | 922 +-
...arget-teams-distribute-parallel-for-simd.c | 3842 +--
...nmp-target-teams-distribute-parallel-for.c | 3842 +--
...dump-openmp-target-teams-distribute-simd.c | 1842 +-
.../ast-dump-openmp-target-teams-distribute.c | 1842 +-
clang/test/AST/ast-dump-openmp-target-teams.c | 88 +-
.../test/AST/ast-dump-openmp-target-update.c | 14 +-
clang/test/AST/ast-dump-openmp-target.c | 24 +-
clang/test/AST/ast-dump-openmp-task.c | 12 +-
.../test/AST/ast-dump-openmp-taskloop-simd.c | 532 +-
clang/test/AST/ast-dump-openmp-taskloop.c | 532 +-
...penmp-teams-distribute-parallel-for-simd.c | 4278 ++--
...ump-openmp-teams-distribute-parallel-for.c | 6045 +++--
.../ast-dump-openmp-teams-distribute-simd.c | 3165 ++-
.../AST/ast-dump-openmp-teams-distribute.c | 3164 ++-
clang/test/AST/ast-dump-openmp-teams.c | 70 +-
.../AST/ast-dump-overloaded-operators.cpp | 44 +-
.../test/AST/ast-dump-pack-indexing-crash.cpp | 10 +-
clang/test/AST/ast-dump-ppc-types.c | 4 +-
clang/test/AST/ast-dump-pragma-json.c | 1000 +-
clang/test/AST/ast-dump-pragma-unroll.cpp | 8 +-
.../ast-dump-record-definition-data-json.cpp | 11274 ++++-----
clang/test/AST/ast-dump-records-json.cpp | 9371 ++++----
clang/test/AST/ast-dump-records.cpp | 2 +-
clang/test/AST/ast-dump-recovery.c | 397 +-
clang/test/AST/ast-dump-recovery.cpp | 1155 +-
clang/test/AST/ast-dump-recovery.m | 16 +-
...ubst-template-type-parm-type-ast-nodes.cpp | 10 +-
clang/test/AST/ast-dump-sme-attributes.cpp | 74 +-
clang/test/AST/ast-dump-stmt-json.c | 11518 ++++-----
clang/test/AST/ast-dump-stmt-json.cpp | 16038 +++++++------
clang/test/AST/ast-dump-stmt-json.m | 1650 +-
clang/test/AST/ast-dump-stmt.c | 106 +-
clang/test/AST/ast-dump-stmt.cpp | 190 +-
clang/test/AST/ast-dump-stmt.m | 2 +-
.../test/AST/ast-dump-template-decls-json.cpp | 6549 +++---
clang/test/AST/ast-dump-template-decls.cpp | 48 +-
...dump-template-json-win32-mangler-crash.cpp | 3756 +--
clang/test/AST/ast-dump-template-name.cpp | 16 +-
clang/test/AST/ast-dump-templates.cpp | 2 +-
clang/test/AST/ast-dump-temporaries-json.cpp | 914 +-
clang/test/AST/ast-dump-traits.cpp | 16 +-
clang/test/AST/ast-dump-types-errors-json.cpp | 232 +-
clang/test/AST/ast-dump-types-json.cpp | 1180 +-
clang/test/AST/ast-dump-using-template.cpp | 18 +-
clang/test/AST/ast-dump-using.cpp | 14 +-
clang/test/AST/ast-dump-wasm-attr-export.c | 24 +-
clang/test/AST/ast-dump-wasm-attr-import.c | 24 +-
clang/test/AST/attr-target-version.c | 4 +-
clang/test/AST/conditionally-trivial-smfs.cpp | 8 +-
clang/test/AST/dump.cpp | 52 +-
clang/test/AST/fixed_point.c | 336 +-
clang/test/AST/float16.cpp | 406 +-
clang/test/AST/ms-constexpr.cpp | 4 +-
clang/test/AST/multistep-explicit-cast-json.c | 1324 +-
.../test/AST/multistep-explicit-cast-json.cpp | 3318 +--
clang/test/AST/new-unknown-type.cpp | 2 +-
clang/test/AST/nrvo.c | 4 +-
clang/test/AST/pr43983.cpp | 2 +-
...agma-attribute-cxx-subject-match-rules.cpp | 80 +-
...ragma-attribute-objc-subject-match-rules.m | 12 +-
.../pragma-multiple-attributes-declspec.cpp | 4 +-
clang/test/AST/pragma-multiple-attributes.cpp | 8 +-
160 files changed, 95302 insertions(+), 83773 deletions(-)
diff --git a/clang/include/clang/AST/ASTNodeTraverser.h b/clang/include/clang/AST/ASTNodeTraverser.h
index 3299011771f33..5a64b9528120f 100644
--- a/clang/include/clang/AST/ASTNodeTraverser.h
+++ b/clang/include/clang/AST/ASTNodeTraverser.h
@@ -448,6 +448,9 @@ class ASTNodeTraverser
}
void VisitVectorType(const VectorType *T) { Visit(T->getElementType()); }
void VisitFunctionType(const FunctionType *T) {
+
+ Visit(T->getReturnType());
+
// SEI: add functionDetails, incl. return type
getNodeDelegate().AddChild("functionDetails", [this, T] {
getNodeDelegate().VisitFunctionType(T);
@@ -610,7 +613,8 @@ class ASTNodeTraverser
// SEI: if this is a function pointer, then we need to get the
// FunctionProtoType and then make add'l visits. if the FP is typedef'd,
// then this behavior occurs for us outside of Visit(VarDecl *)
- getNodeDelegate().Visit(D->getType());
+ //getNodeDelegate().Visit(D->getType(), true);
+ Visit(D->getType());
}
void VisitDecompositionDecl(const DecompositionDecl *D) {
diff --git a/clang/include/clang/AST/JSONNodeDumper.h b/clang/include/clang/AST/JSONNodeDumper.h
index 25cec3abcbae8..bee28672f8e99 100644
--- a/clang/include/clang/AST/JSONNodeDumper.h
+++ b/clang/include/clang/AST/JSONNodeDumper.h
@@ -231,6 +231,10 @@ class JSONNodeDumper
void Visit(const Type *T);
void Visit(QualType T);
+ // SEI: forwarding function to Visit(QualType T); so that it's applied here
+ // from a VarDecl call
+ void Visit(QualType T, bool isFromDecl);
+
// SEI: get specific details from the qual type
void VisitQualTypeDetails(QualType T);
diff --git a/clang/include/clang/AST/TextNodeDumper.h b/clang/include/clang/AST/TextNodeDumper.h
index 89f0fb110b31a..eb1e0503108cb 100644
--- a/clang/include/clang/AST/TextNodeDumper.h
+++ b/clang/include/clang/AST/TextNodeDumper.h
@@ -197,6 +197,9 @@ class TextNodeDumper
void Visit(QualType T);
+ // SEI: added to prevent this from being added whenever it comes from VarDecl
+ void Visit(QualType T, bool isFromDecl);
+
void Visit(TypeLoc);
// SEI: added support for getting ReturnType information
diff --git a/clang/lib/AST/JSONNodeDumper.cpp b/clang/lib/AST/JSONNodeDumper.cpp
index 72b2c2b9b8aa8..8f2dc817d7b96 100644
--- a/clang/lib/AST/JSONNodeDumper.cpp
+++ b/clang/lib/AST/JSONNodeDumper.cpp
@@ -140,6 +140,10 @@ void JSONNodeDumper::Visit(QualType T) {
//} );
}
+// SEI: added this as a forwarding function so that the TextNodeDumper
+// SEI: doesn't have this applied when coming from a VarDecl
+void JSONNodeDumper::Visit(QualType T, bool isFromDecl) { Visit(T); }
+
void JSONNodeDumper::Visit(TypeLoc TL) {
if (TL.isNull())
return;
diff --git a/clang/lib/AST/TextNodeDumper.cpp b/clang/lib/AST/TextNodeDumper.cpp
index 7d87c4d1b5eeb..afe7008aa7cd3 100644
--- a/clang/lib/AST/TextNodeDumper.cpp
+++ b/clang/lib/AST/TextNodeDumper.cpp
@@ -241,6 +241,13 @@ void TextNodeDumper::Visit(QualType T) {
OS << " " << T.split().Quals.getAsString();
}
+// SEI: ignore this from being called whenever it's from a VarDecl
+// SEI: so we don't interfere with the normal text output
+void TextNodeDumper::Visit(QualType T, bool isFromDecl) {
+ if (!isFromDecl)
+ Visit(T);
+}
+
void TextNodeDumper::VisitReturnType(QualType T) {
OS << "ReturnType";
dumpPointer(T.getAsOpaquePtr());
diff --git a/clang/test/AST/HLSL/OutArgExpr.hlsl b/clang/test/AST/HLSL/OutArgExpr.hlsl
index b07c2efadbf4a..ef31bc7f454fc 100644
--- a/clang/test/AST/HLSL/OutArgExpr.hlsl
+++ b/clang/test/AST/HLSL/OutArgExpr.hlsl
@@ -12,42 +12,42 @@ RWBuffer<float> Buf;
// CHECK: void trunc_Param(inout int &__restrict X) {
// AST: FunctionDecl {{.*}} used trunc_Param 'void (inout int)'
-// AST-NEXT: ParmVarDecl {{.*}} X 'int &__restrict'
-// AST-NEXT: HLSLParamModifierAttr {{.*}} inout
+// AST: ParmVarDecl {{.*}} X 'int &__restrict'
+// AST: HLSLParamModifierAttr {{.*}} inout
void trunc_Param(inout int X) {}
// CHECK: void zero(out int &__restrict Z) {
-// CHECK-NEXT: Z = 0;
+// CHECK: Z = 0;
// AST: FunctionDecl {{.*}} zero 'void (out int)'
-// AST-NEXT: ParmVarDecl {{.*}} used Z 'int &__restrict'
-// AST-NEXT: HLSLParamModifierAttr {{.*}} out
+// AST: ParmVarDecl {{.*}} used Z 'int &__restrict'
+// AST: HLSLParamModifierAttr {{.*}} out
void zero(out int Z) { Z = 0; }
// AST-LABEL: FunctionDecl {{.*}} imported used fn 'void (uint)'
// AST: CallExpr {{.*}} 'void'
-// AST-NEXT: ImplicitCastExpr {{.*}} 'void (*)(inout int)' <FunctionToPointerDecay>
-// AST-NEXT: DeclRefExpr {{.*}} 'void (inout int)' lvalue Function
-// AST-NEXT: HLSLOutArgExpr {{.*}} 'int' lvalue inout
-// AST-NEXT: OpaqueValueExpr [[LVOpV:0x[0-9a-fA-F]+]] {{.*}} 'float' lvalue
-// AST-NEXT: CXXOperatorCallExpr {{.*}} 'float' lvalue '[]'
-// AST-NEXT: ImplicitCastExpr {{.*}} 'float &(*)(unsigned int)' <FunctionToPointerDecay>
-// AST-NEXT: DeclRefExpr {{.*}} 'float &(unsigned int)' lvalue CXXMethod {{.*}} 'operator[]' 'float &(unsigned int)'
-// AST-NEXT: DeclRefExpr {{.*}} 'RWBuffer<float>':'hlsl::RWBuffer<float>' lvalue Var {{.*}} 'Buf' 'RWBuffer<float>':'hlsl::RWBuffer<float>'
-// AST-NEXT: ImplicitCastExpr {{.*}} 'uint':'unsigned int' <LValueToRValue>
-// AST-NEXT: DeclRefExpr {{.*}} 'uint':'unsigned int' lvalue ParmVar {{.*}} 'GI' 'uint':'unsigned int'
-
-// AST-NEXT: OpaqueValueExpr [[TmpOpV:0x[0-9a-fA-F]+]] {{.*}} 'int' lvalue
-// AST-NEXT: ImplicitCastExpr {{.*}} 'int' <FloatingToIntegral>
-// AST-NEXT: ImplicitCastExpr {{.*}} 'float' <LValueToRValue>
-// AST-NEXT: OpaqueValueExpr [[LVOpV]] <col:15, col:21> 'float' lvalue
+// AST: ImplicitCastExpr {{.*}} 'void (*)(inout int)' <FunctionToPointerDecay>
+// AST: DeclRefExpr {{.*}} 'void (inout int)' lvalue Function
+// AST: HLSLOutArgExpr {{.*}} 'int' lvalue inout
+// AST: OpaqueValueExpr [[LVOpV:0x[0-9a-fA-F]+]] {{.*}} 'float' lvalue
+// AST: CXXOperatorCallExpr {{.*}} 'float' lvalue '[]'
+// AST: ImplicitCastExpr {{.*}} 'float &(*)(unsigned int)' <FunctionToPointerDecay>
+// AST: DeclRefExpr {{.*}} 'float &(unsigned int)' lvalue CXXMethod {{.*}} 'operator[]' 'float &(unsigned int)'
+// AST: DeclRefExpr {{.*}} 'RWBuffer<float>':'hlsl::RWBuffer<float>' lvalue Var {{.*}} 'Buf' 'RWBuffer<float>':'hlsl::RWBuffer<float>'
+// AST: ImplicitCastExpr {{.*}} 'uint':'unsigned int' <LValueToRValue>
+// AST: DeclRefExpr {{.*}} 'uint':'unsigned int' lvalue ParmVar {{.*}} 'GI' 'uint':'unsigned int'
+
+// AST: OpaqueValueExpr [[TmpOpV:0x[0-9a-fA-F]+]] {{.*}} 'int' lvalue
+// AST: ImplicitCastExpr {{.*}} 'int' <FloatingToIntegral>
+// AST: ImplicitCastExpr {{.*}} 'float' <LValueToRValue>
+// AST: OpaqueValueExpr [[LVOpV]] <col:15, col:21> 'float' lvalue
// AST: BinaryOperator {{.*}} 'float' lvalue '='
-// AST-NEXT: OpaqueValueExpr [[LVOpV]] {{.*}} 'float' lvalue
+// AST: OpaqueValueExpr [[LVOpV]] {{.*}} 'float' lvalue
// AST: ImplicitCastExpr {{.*}} 'float' <IntegralToFloating>
-// AST-NEXT: ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
-// AST-NEXT: OpaqueValueExpr [[TmpOpV]] {{.*}} 'int' lvalue
+// AST: ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// AST: OpaqueValueExpr [[TmpOpV]] {{.*}} 'int' lvalue
// CHECK: void fn(uint GI) {
// CHECK: trunc_Param(Buf[GI]);
@@ -59,21 +59,21 @@ void fn(uint GI) {
// AST-LABEL: FunctionDecl {{.*}} main 'void (uint)'
// AST: CallExpr {{.*}} 'void'
-// AST-NEXT: ImplicitCastExpr {{.*}} 'void (*)(out int)' <FunctionToPointerDecay>
-// AST-NEXT: DeclRefExpr {{.*}} 'void (out int)' lvalue Function {{.*}} 'zero' 'void (out int)'
-// AST-NEXT: HLSLOutArgExpr {{.*}} 'int' lvalue out
+// AST: ImplicitCastExpr {{.*}} 'void (*)(out int)' <FunctionToPointerDecay>
+// AST: DeclRefExpr {{.*}} 'void (out int)' lvalue Function {{.*}} 'zero' 'void (out int)'
+// AST: HLSLOutArgExpr {{.*}} 'int' lvalue out
// AST: OpaqueValueExpr [[LVOpV:0x[0-9a-fA-F]+]] {{.*}} 'int' lvalue
-// AST-NEXT: DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'I' 'int'
+// AST: DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'I' 'int'
-// AST-NEXT: OpaqueValueExpr [[TmpOpV:0x[0-9a-fA-F]+]] {{.*}} 'int' lvalue
-// AST-NEXT: ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
-// AST-NEXT: OpaqueValueExpr [[LVOpV]] <col:8> 'int' lvalue
+// AST: OpaqueValueExpr [[TmpOpV:0x[0-9a-fA-F]+]] {{.*}} 'int' lvalue
+// AST: ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// AST: OpaqueValueExpr [[LVOpV]] <col:8> 'int' lvalue
// AST: BinaryOperator {{.*}} 'int' lvalue '='
-// AST-NEXT: OpaqueValueExpr [[LVOpV]] {{.*}} 'int' lvalue
+// AST: OpaqueValueExpr [[LVOpV]] {{.*}} 'int' lvalue
// AST: ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
-// AST-NEXT: OpaqueValueExpr [[TmpOpV]] {{.*}} 'int' lvalue
+// AST: OpaqueValueExpr [[TmpOpV]] {{.*}} 'int' lvalue
[numthreads(8,1,1)]
diff --git a/clang/test/AST/HLSL/RWBuffer-AST.hlsl b/clang/test/AST/HLSL/RWBuffer-AST.hlsl
index 55c0dfa2eaa53..25e8d01fd14c3 100644
--- a/clang/test/AST/HLSL/RWBuffer-AST.hlsl
+++ b/clang/test/AST/HLSL/RWBuffer-AST.hlsl
@@ -37,7 +37,7 @@ RWBuffer<float> Buffer;
// CHECK: CXXMethodDecl 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> <invalid sloc> operator[] 'element_type &const (unsigned int) const'
// CHECK-NEXT: ParmVarDecl 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> <invalid sloc> Idx 'unsigned int'
-// CHECK-NEXT: CompoundStmt 0x{{[0-9A-Fa-f]+}} <<invalid sloc>>
+// CHECK: CompoundStmt 0x{{[0-9A-Fa-f]+}} <<invalid sloc>>
// CHECK-NEXT: ReturnStmt 0x{{[0-9A-Fa-f]+}} <<invalid sloc>>
// CHECK-NEXT: MemberExpr 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> 'element_type' lvalue .e 0x{{[0-9A-Fa-f]+}}
// CHECK-NEXT: CXXThisExpr 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> 'const RWBuffer<element_type>' lvalue implicit this
@@ -45,7 +45,7 @@ RWBuffer<float> Buffer;
// CHECK-NEXT: CXXMethodDecl 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> <invalid sloc> operator[] 'element_type &(unsigned int)'
// CHECK-NEXT: ParmVarDecl 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> <invalid sloc> Idx 'unsigned int'
-// CHECK-NEXT: CompoundStmt 0x{{[0-9A-Fa-f]+}} <<invalid sloc>>
+// CHECK: CompoundStmt 0x{{[0-9A-Fa-f]+}} <<invalid sloc>>
// CHECK-NEXT: ReturnStmt 0x{{[0-9A-Fa-f]+}} <<invalid sloc>>
// CHECK-NEXT: MemberExpr 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> 'element_type' lvalue .e 0x{{[0-9A-Fa-f]+}}
// CHECK-NEXT: CXXThisExpr 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> 'RWBuffer<element_type>' lvalue implicit this
diff --git a/clang/test/AST/HLSL/StructuredBuffer-AST.hlsl b/clang/test/AST/HLSL/StructuredBuffer-AST.hlsl
index b31db8ce59f22..4e514a5d2ad79 100644
--- a/clang/test/AST/HLSL/StructuredBuffer-AST.hlsl
+++ b/clang/test/AST/HLSL/StructuredBuffer-AST.hlsl
@@ -39,7 +39,7 @@ StructuredBuffer<float> Buffer;
// CHECK: CXXMethodDecl 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> <invalid sloc> operator[] 'element_type &const (unsigned int) const'
// CHECK-NEXT: ParmVarDecl 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> <invalid sloc> Idx 'unsigned int'
-// CHECK-NEXT: CompoundStmt 0x{{[0-9A-Fa-f]+}} <<invalid sloc>>
+// CHECK: CompoundStmt 0x{{[0-9A-Fa-f]+}} <<invalid sloc>>
// CHECK-NEXT: ReturnStmt 0x{{[0-9A-Fa-f]+}} <<invalid sloc>>
// CHECK-NEXT: MemberExpr 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> 'element_type' lvalue .e 0x{{[0-9A-Fa-f]+}}
// CHECK-NEXT: CXXThisExpr 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> 'const StructuredBuffer<element_type>' lvalue implicit this
@@ -47,7 +47,7 @@ StructuredBuffer<float> Buffer;
// CHECK-NEXT: CXXMethodDecl 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> <invalid sloc> operator[] 'element_type &(unsigned int)'
// CHECK-NEXT: ParmVarDecl 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> <invalid sloc> Idx 'unsigned int'
-// CHECK-NEXT: CompoundStmt 0x{{[0-9A-Fa-f]+}} <<invalid sloc>>
+// CHECK: CompoundStmt 0x{{[0-9A-Fa-f]+}} <<invalid sloc>>
// CHECK-NEXT: ReturnStmt 0x{{[0-9A-Fa-f]+}} <<invalid sloc>>
// CHECK-NEXT: MemberExpr 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> 'element_type' lvalue .e 0x{{[0-9A-Fa-f]+}}
// CHECK-NEXT: CXXThisExpr 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> 'StructuredBuffer<element_type>' lvalue implicit this
diff --git a/clang/test/AST/HLSL/ast-dump-comment-cbuffe-tbufferr.hlsl b/clang/test/AST/HLSL/ast-dump-comment-cbuffe-tbufferr.hlsl
index e6a2ea7c6d2dc..148368d85527e 100644
--- a/clang/test/AST/HLSL/ast-dump-comment-cbuffe-tbufferr.hlsl
+++ b/clang/test/AST/HLSL/ast-dump-comment-cbuffe-tbufferr.hlsl
@@ -38,18 +38,18 @@ tbuffer B {
}
// AST:HLSLBufferDecl {{.*}}:11:1, line:20:1> line:11:9 cbuffer A
-// AST-NEXT:-HLSLResourceClassAttr {{.*}} <<invalid sloc>> Implicit CBuffer
-// AST-NEXT:-HLSLResourceAttr {{.*}} <<invalid sloc>> Implicit CBuffer
+// AST-NEXT:-attrDetails: HLSLResourceClassAttr {{.*}} <<invalid sloc>> Implicit CBuffer
+// AST-NEXT:-attrDetails: HLSLResourceAttr {{.*}} <<invalid sloc>> Implicit CBuffer
// AST-NEXT:FullComment {{.*}}<line:10:4, col:17>
// AST-NEXT:`-ParagraphComment {{.*}}<col:4, col:17>
// AST-NEXT:`-TextComment {{.*}}<col:4, col:17> Text=" CBuffer decl."
// AST-NEXT:-VarDecl {{.*}}<line:15:5, col:11> col:11 a 'float'
-// AST-NEXT:`-VarDecl {{.*}}<line:19:5, col:9> col:9 b 'int'
-// AST-NEXT:HLSLBufferDecl {{.*}}<line:29:1, line:38:1> line:29:9 tbuffer B
-// AST-NEXT:-HLSLResourceClassAttr {{.*}} <<invalid sloc>> Implicit SRV
-// AST-NEXT:-HLSLResourceAttr {{.*}} <<invalid sloc>> Implicit TBuffer
+// AST:`-VarDecl {{.*}}<line:19:5, col:9> col:9 b 'int'
+// AST:HLSLBufferDecl {{.*}}<line:29:1, line:38:1> line:29:9 tbuffer B
+// AST-NEXT:-attrDetails: HLSLResourceClassAttr {{.*}} <<invalid sloc>> Implicit SRV
+// AST-NEXT:-attrDetails: HLSLResourceAttr {{.*}} <<invalid sloc>> Implicit TBuffer
// AST-NEXT:-FullComment {{.*}}<line:28:4, col:17>
// AST-NEXT: `-ParagraphComment {{.*}}<col:4, col:17>
// AST-NEXT: `-TextComment {{.*}}<col:4, col:17> Text=" TBuffer decl."
// AST-NEXT:-VarDecl {{.*}}<line:33:5, col:11> col:11 c 'float'
-// AST-NEXT:`-VarDecl {{.*}} <line:37:5, col:9> col:9 d 'int'
+// AST:`-VarDecl {{.*}} <line:37:5, col:9> col:9 d 'int'
diff --git a/clang/test/AST/HLSL/packoffset.hlsl b/clang/test/AST/HLSL/packoffset.hlsl
index 9c928bd6d922e..de49a8c3e87e1 100644
--- a/clang/test/AST/HLSL/packoffset.hlsl
+++ b/clang/test/AST/HLSL/packoffset.hlsl
@@ -4,16 +4,16 @@
// CHECK: HLSLBufferDecl {{.*}} cbuffer A
cbuffer A
{
- // CHECK-NEXT:-HLSLResourceClassAttr {{.*}} <<invalid sloc>> Implicit CBuffer
- // CHECK-NEXT:-HLSLResourceAttr {{.*}} <<invalid sloc>> Implicit CBuffer
+ // CHECK-NEXT: -attrDetails: HLSLResourceClassAttr {{.*}} <<invalid sloc>> Implicit CBuffer
+ // CHECK-NEXT: -attrDetails: HLSLResourceAttr {{.*}} <<invalid sloc>> Implicit CBuffer
// CHECK-NEXT: VarDecl {{.*}} A1 'float4'
- // CHECK-NEXT: HLSLPackOffsetAttr {{.*}} 0 0
+ // CHECK: -attrDetails: HLSLPackOffsetAttr {{.*}} 0 0
float4 A1 : packoffset(c);
// CHECK-NEXT: VarDecl {{.*}} col:11 A2 'float'
- // CHECK-NEXT: HLSLPackOffsetAttr {{.*}} 1 0
+ // CHECK: -attrDetails: HLSLPackOffsetAttr {{.*}} 1 0
float A2 : packoffset(c1);
// CHECK-NEXT: VarDecl {{.*}} col:11 A3 'float'
- // CHECK-NEXT: HLSLPackOffsetAttr {{.*}} 1 1
+ // CHECK: -attrDetails: HLSLPackOffsetAttr {{.*}} 1 1
float A3 : packoffset(c1.y);
}
@@ -21,13 +21,13 @@ cbuffer A
cbuffer B
{
// CHECK: VarDecl {{.*}} B0 'float'
- // CHECK-NEXT: HLSLPackOffsetAttr {{.*}} 0 1
+ // CHECK: -attrDetails: HLSLPackOffsetAttr {{.*}} 0 1
float B0 : packoffset(c0.g);
// CHECK-NEXT: VarDecl {{.*}} B1 'double'
- // CHECK-NEXT: HLSLPackOffsetAttr {{.*}} 0 2
+ // CHECK: -attrDetails: HLSLPackOffsetAttr {{.*}} 0 2
double B1 : packoffset(c0.b);
// CHECK-NEXT: VarDecl {{.*}} B2 'half'
- // CHECK-NEXT: HLSLPackOffsetAttr {{.*}} 0 0
+ // CHECK: -attrDetails: HLSLPackOffsetAttr {{.*}} 0 0
half B2 : packoffset(c0.r);
}
@@ -35,13 +35,13 @@ cbuffer B
cbuffer C
{
// CHECK: VarDecl {{.*}} C0 'float'
- // CHECK-NEXT: HLSLPackOffsetAttr {{.*}} 1
+ // CHECK: -attrDetails: HLSLPackOffsetAttr {{.*}} 1
float C0 : packoffset(c0.y);
// CHECK-NEXT: VarDecl {{.*}} C1 'float2'
- // CHECK-NEXT: HLSLPackOffsetAttr {{.*}} 2
+ // CHECK: -attrDetails: HLSLPackOffsetAttr {{.*}} 2
float2 C1 : packoffset(c0.z);
// CHECK-NEXT: VarDecl {{.*}} C2 'half'
- // CHECK-NEXT: HLSLPackOffsetAttr {{.*}} 0
+ // CHECK: -attrDetails: HLSLPackOffsetAttr {{.*}} 0
half C2 : packoffset(c0.x);
}
@@ -50,16 +50,16 @@ cbuffer C
cbuffer D
{
// CHECK: VarDecl {{.*}} D0 'float'
- // CHECK-NEXT: HLSLPackOffsetAttr {{.*}} 0 1
+ // CHECK: HLSLPackOffsetAttr {{.*}} 0 1
float D0 : packoffset(c0.y);
// CHECK-NEXT: VarDecl {{.*}} D1 'float[2]'
- // CHECK-NEXT: HLSLPackOffsetAttr {{.*}} 1 0
+ // CHECK: -attrDetails: HLSLPackOffsetAttr {{.*}} 1 0
float D1[2] : packoffset(c1.x);
// CHECK-NEXT: VarDecl {{.*}} D2 'half3'
- // CHECK-NEXT: HLSLPackOffsetAttr {{.*}} 2 1
+ // CHECK: -attrDetails: HLSLPackOffsetAttr {{.*}} 2 1
half3 D2 : packoffset(c2.y);
// CHECK-NEXT: VarDecl {{.*}} D3 'double'
- // CHECK-NEXT: HLSLPackOffsetAttr {{.*}} 0 2
+ // CHECK: -attrDetails: HLSLPackOffsetAttr {{.*}} 0 2
double D3 : packoffset(c0.z);
}
@@ -72,13 +72,13 @@ struct ST {
// CHECK: HLSLBufferDecl {{.*}} cbuffer S
cbuffer S {
// CHECK: VarDecl {{.*}} S0 'float'
- // CHECK-NEXT: HLSLPackOffsetAttr {{.*}} 0 1
+ // CHECK: -attrDetails: HLSLPackOffsetAttr {{.*}} 0 1
float S0 : packoffset(c0.y);
// CHECK: VarDecl {{.*}} S1 'ST'
- // CHECK: HLSLPackOffsetAttr {{.*}} 1 0
+ // CHECK: -attrDetails: HLSLPackOffsetAttr {{.*}} 1 0
ST S1 : packoffset(c1);
// CHECK: VarDecl {{.*}} S2 'double2'
- // CHECK-NEXT: HLSLPackOffsetAttr {{.*}} 2 0
+ // CHECK: -attrDetails: HLSLPackOffsetAttr {{.*}} 2 0
double2 S2 : packoffset(c2);
}
@@ -91,12 +91,12 @@ struct ST2 {
// CHECK: HLSLBufferDecl {{.*}} cbuffer S2
cbuffer S2 {
// CHECK: VarDecl {{.*}} S20 'float'
- // CHECK-NEXT: HLSLPackOffsetAttr {{.*}} 0 3
+ // CHECK: -attrDetails: HLSLPackOffsetAttr {{.*}} 0 3
float S20 : packoffset(c0.a);
// CHECK: VarDecl {{.*}} S21 'ST2'
- // CHECK: HLSLPackOffsetAttr {{.*}} 1 0
+ // CHECK: -attrDetails: HLSLPackOffsetAttr {{.*}} 1 0
ST2 S21 : packoffset(c1);
// CHECK: VarDecl {{.*}} S22 'half'
- // CHECK-NEXT: HLSLPackOffsetAttr {{.*}} 3 1
+ // CHECK: -attrDetails: HLSLPackOffsetAttr {{.*}} 3 1
half S22 : packoffset(c3.y);
}
diff --git a/clang/test/AST/HLSL/pch_hlsl_buffer.hlsl b/clang/test/AST/HLSL/pch_hlsl_buffer.hlsl
index 281d8be8addf0..981ccc25c93c6 100644
--- a/clang/test/AST/HLSL/pch_hlsl_buffer.hlsl
+++ b/clang/test/AST/HLSL/pch_hlsl_buffer.hlsl
@@ -17,18 +17,18 @@ float foo() {
}
// Make sure cbuffer/tbuffer works for PCH.
// CHECK:HLSLBufferDecl 0x{{[0-9a-f]+}} <{{.*}}:7:1, line:9:1> line:7:9 imported <undeserialized declarations> cbuffer A
-// CHECK-NEXT:HLSLResourceClassAttr {{.*}} <<invalid sloc>> Implicit CBuffer
-// CHECK-NEXT:HLSLResourceAttr {{.*}} <<invalid sloc>> Implicit CBuffer
-// CHECK-NEXT:`-VarDecl 0x[[A:[0-9a-f]+]] <line:8:3, col:9> col:9 imported used a 'float'
-// CHECK-NEXT:HLSLBufferDecl 0x{{[0-9a-f]+}} <line:11:1, line:13:1> line:11:9 imported <undeserialized declarations> tbuffer B
-// CHECK-NEXT:HLSLResourceClassAttr {{.*}} <<invalid sloc>> Implicit SRV
-// CHECK-NEXT:HLSLResourceAttr {{.*}} <<invalid sloc>> Implicit TBuffer
-// CHECK-NEXT:`-VarDecl 0x[[B:[0-9a-f]+]] <line:12:3, col:9> col:9 imported used b 'float'
-// CHECK-NEXT:FunctionDecl 0x{{[0-9a-f]+}} <line:15:1, line:17:1> line:15:7 imported foo 'float ()'
-// CHECK-NEXT:CompoundStmt 0x{{[0-9a-f]+}} <col:13, line:17:1>
-// CHECK-NEXT:ReturnStmt 0x{{[0-9a-f]+}} <line:16:3, col:14>
-// CHECK-NEXT:BinaryOperator 0x{{[0-9a-f]+}} <col:10, col:14> 'float' '+'
-// CHECK-NEXT:ImplicitCastExpr 0x{{[0-9a-f]+}} <col:10> 'float' <LValueToRValue>
-// CHECK-NEXT:`-DeclRefExpr 0x{{[0-9a-f]+}} <col:10> 'float' lvalue Var 0x[[A]] 'a' 'float'
-// CHECK-NEXT:`-ImplicitCastExpr 0x{{[0-9a-f]+}} <col:14> 'float' <LValueToRValue>
-// CHECK-NEXT:`-DeclRefExpr 0x{{[0-9a-f]+}} <col:14> 'float' lvalue Var 0x[[B]] 'b' 'float'
+// CHECK:HLSLResourceClassAttr {{.*}} <<invalid sloc>> Implicit CBuffer
+// CHECK:HLSLResourceAttr {{.*}} <<invalid sloc>> Implicit CBuffer
+// CHECK:`-VarDecl 0x[[A:[0-9a-f]+]] <line:8:3, col:9> col:9 imported used a 'float'
+// CHECK:HLSLBufferDecl 0x{{[0-9a-f]+}} <line:11:1, line:13:1> line:11:9 imported <undeserialized declarations> tbuffer B
+// CHECK:HLSLResourceClassAttr {{.*}} <<invalid sloc>> Implicit SRV
+// CHECK:HLSLResourceAttr {{.*}} <<invalid sloc>> Implicit TBuffer
+// CHECK:`-VarDecl 0x[[B:[0-9a-f]+]] <line:12:3, col:9> col:9 imported used b 'float'
+// CHECK:FunctionDecl 0x{{[0-9a-f]+}} <line:15:1, line:17:1> line:15:7 imported foo 'float ()'
+// CHECK:CompoundStmt 0x{{[0-9a-f]+}} <col:13, line:17:1>
+// CHECK:ReturnStmt 0x{{[0-9a-f]+}} <line:16:3, col:14>
+// CHECK:BinaryOperator 0x{{[0-9a-f]+}} <col:10, col:14> 'float' '+'
+// CHECK:ImplicitCastExpr 0x{{[0-9a-f]+}} <col:10> 'float' <LValueToRValue>
+// CHECK:`-DeclRefExpr 0x{{[0-9a-f]+}} <col:10> 'float' lvalue Var 0x[[A]] 'a' 'float'
+// CHECK:`-ImplicitCastExpr 0x{{[0-9a-f]+}} <col:14> 'float' <LValueToRValue>
+// CHECK:`-DeclRefExpr 0x{{[0-9a-f]+}} <col:14> 'float' lvalue Var 0x[[B]] 'b' 'float'
diff --git a/clang/test/AST/HLSL/resource_binding_attr.hlsl b/clang/test/AST/HLSL/resource_binding_attr.hlsl
index 13957ad3c1fcc..f156f40b5b4d4 100644
--- a/clang/test/AST/HLSL/resource_binding_attr.hlsl
+++ b/clang/test/AST/HLSL/resource_binding_attr.hlsl
@@ -1,18 +1,18 @@
// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.3-library -x hlsl -ast-dump -o - %s | FileCheck %s
// CHECK:HLSLBufferDecl 0x[[CB:[0-9a-f]+]] {{.*}} line:8:9 cbuffer CB
-// CHECK-NEXT:HLSLResourceClassAttr 0x[[CB:[0-9a-f]+]] {{.*}} Implicit CBuffer
-// CHECK-NEXT:HLSLResourceAttr 0x[[CB:[0-9a-f]+]] {{.*}} Implicit CBuffer
-// CHECK-NEXT:HLSLResourceBindingAttr 0x{{[0-9a-f]+}} <col:14> "b3" "space2"
+// CHECK-NEXT:-attrDetails: HLSLResourceClassAttr 0x[[CB:[0-9a-f]+]] {{.*}} Implicit CBuffer
+// CHECK-NEXT:-attrDetails: HLSLResourceAttr 0x[[CB:[0-9a-f]+]] {{.*}} Implicit CBuffer
+// CHECK-NEXT:-attrDetails: HLSLResourceBindingAttr 0x{{[0-9a-f]+}} <col:14> "b3" "space2"
// CHECK-NEXT:VarDecl 0x[[A:[0-9a-f]+]] {{.*}} col:9 used a 'float'
cbuffer CB : register(b3, space2) {
float a;
}
// CHECK:HLSLBufferDecl 0x[[TB:[0-9a-f]+]] {{.*}} line:17:9 tbuffer TB
-// CHECK-NEXT:HLSLResourceClassAttr 0x[[CB:[0-9a-f]+]] {{.*}} Implicit SRV
-// CHECK-NEXT:HLSLResourceAttr 0x[[CB:[0-9a-f]+]] {{.*}} Implicit TBuffer
-// CHECK-NEXT:HLSLResourceBindingAttr 0x{{[0-9a-f]+}} <col:14> "t2" "space1"
+// CHECK-NEXT:-attrDetails: HLSLResourceClassAttr 0x[[CB:[0-9a-f]+]] {{.*}} Implicit SRV
+// CHECK-NEXT:-attrDetails: HLSLResourceAttr 0x[[CB:[0-9a-f]+]] {{.*}} Implicit TBuffer
+// CHECK-NEXT:-attrDetails: HLSLResourceBindingAttr 0x{{[0-9a-f]+}} <col:14> "t2" "space1"
// CHECK-NEXT:VarDecl 0x[[B:[0-9a-f]+]] {{.*}} col:9 used b 'float'
tbuffer TB : register(t2, space1) {
float b;
@@ -29,13 +29,13 @@ float foo() {
// CHECK: VarDecl 0x{{[0-9a-f]+}} <{{.*}}> col:17 UAV 'RWBuffer<float>':'hlsl::RWBuffer<float>' callinit
// CHECK-NEXT:-CXXConstructExpr 0x{{[0-9a-f]+}} <col:17> 'RWBuffer<float>':'hlsl::RWBuffer<float>' 'void ()'
-// CHECK-NEXT:-HLSLResourceBindingAttr 0x{{[0-9a-f]+}} <col:23> "u3" "space0"
+// CHECK:-attrDetails: HLSLResourceBindingAttr 0x{{[0-9a-f]+}} <col:23> "u3" "space0"
RWBuffer<float> UAV : register(u3);
// CHECK: -VarDecl 0x{{[0-9a-f]+}} <{{.*}}> col:17 UAV1 'RWBuffer<float>':'hlsl::RWBuffer<float>' callinit
// CHECK-NEXT:-CXXConstructExpr 0x{{[0-9a-f]+}} <col:17> 'RWBuffer<float>':'hlsl::RWBuffer<float>' 'void ()'
-// CHECK-NEXT:-HLSLResourceBindingAttr 0x{{[0-9a-f]+}} <col:24> "u2" "space0"
+// CHECK:-attrDetails: HLSLResourceBindingAttr 0x{{[0-9a-f]+}} <col:24> "u2" "space0"
// CHECK-NEXT:-VarDecl 0x{{[0-9a-f]+}} <col:1, col:38> col:38 UAV2 'RWBuffer<float>':'hlsl::RWBuffer<float>' callinit
// CHECK-NEXT:-CXXConstructExpr 0x{{[0-9a-f]+}} <col:38> 'RWBuffer<float>':'hlsl::RWBuffer<float>' 'void ()'
-// CHECK-NEXT:-HLSLResourceBindingAttr 0x{{[0-9a-f]+}} <col:45> "u4" "space0"
+// CHECK:-attrDetails: HLSLResourceBindingAttr 0x{{[0-9a-f]+}} <col:45> "u4" "space0"
RWBuffer<float> UAV1 : register(u2), UAV2 : register(u4);
diff --git a/clang/test/AST/alignas_maybe_odr_cleanup.cpp b/clang/test/AST/alignas_maybe_odr_cleanup.cpp
index 287eb6e2a4bbb..66987f762dab0 100644
--- a/clang/test/AST/alignas_maybe_odr_cleanup.cpp
+++ b/clang/test/AST/alignas_maybe_odr_cleanup.cpp
@@ -15,7 +15,7 @@ struct FOO {
}
};
-// CHECK: | `-AlignedAttr {{.*}} <col:14> alignas
+// CHECK: | `-attrDetails: AlignedAttr {{.*}} <col:14> alignas
// CHECK-NEXT: | `-ConstantExpr {{.*}} <col:22> 'int'
// CHECK-NEXT: | |-value: Int 16
// CHECK-NEXT: | `-ImplicitCastExpr {{.*}} <col:22> 'int' <LValueToRValue>
diff --git a/clang/test/AST/ast-dump-aarch64-sve-types.c b/clang/test/AST/ast-dump-aarch64-sve-types.c
index b5a0b00b49280..05a377690f3d6 100644
--- a/clang/test/AST/ast-dump-aarch64-sve-types.c
+++ b/clang/test/AST/ast-dump-aarch64-sve-types.c
@@ -10,43 +10,43 @@
// RUN: | FileCheck %s
// CHECK: TypedefDecl {{.*}} implicit __SVInt8_t '__SVInt8_t'
-// CHECK-NEXT: -BuiltinType {{.*}} '__SVInt8_t'
+// CHECK-NEXT: -typeDetails: BuiltinType {{.*}} '__SVInt8_t'
// CHECK: TypedefDecl {{.*}} implicit __SVInt16_t '__SVInt16_t'
-// CHECK-NEXT: -BuiltinType {{.*}} '__SVInt16_t'
+// CHECK-NEXT: -typeDetails: BuiltinType {{.*}} '__SVInt16_t'
// CHECK: TypedefDecl {{.*}} implicit __SVInt32_t '__SVInt32_t'
-// CHECK-NEXT: -BuiltinType {{.*}} '__SVInt32_t'
+// CHECK-NEXT: -typeDetails: BuiltinType {{.*}} '__SVInt32_t'
// CHECK: TypedefDecl {{.*}} implicit __SVInt64_t '__SVInt64_t'
-// CHECK-NEXT: -BuiltinType {{.*}} '__SVInt64_t'
+// CHECK-NEXT: -typeDetails: BuiltinType {{.*}} '__SVInt64_t'
// CHECK: TypedefDecl {{.*}} implicit __SVUint8_t '__SVUint8_t'
-// CHECK-NEXT: -BuiltinType {{.*}} '__SVUint8_t'
+// CHECK-NEXT: -typeDetails: BuiltinType {{.*}} '__SVUint8_t'
// CHECK: TypedefDecl {{.*}} implicit __SVUint16_t '__SVUint16_t'
-// CHECK-NEXT: -BuiltinType {{.*}} '__SVUint16_t'
+// CHECK-NEXT: -typeDetails: BuiltinType {{.*}} '__SVUint16_t'
// CHECK: TypedefDecl {{.*}} implicit __SVUint32_t '__SVUint32_t'
-// CHECK-NEXT: -BuiltinType {{.*}} '__SVUint32_t'
+// CHECK-NEXT: -typeDetails: BuiltinType {{.*}} '__SVUint32_t'
// CHECK: TypedefDecl {{.*}} implicit __SVUint64_t '__SVUint64_t'
-// CHECK-NEXT: -BuiltinType {{.*}} '__SVUint64_t'
+// CHECK-NEXT: -typeDetails: BuiltinType {{.*}} '__SVUint64_t'
// CHECK: TypedefDecl {{.*}} implicit __SVFloat16_t '__SVFloat16_t'
-// CHECK-NEXT: -BuiltinType {{.*}} '__SVFloat16_t'
+// CHECK-NEXT: -typeDetails: BuiltinType {{.*}} '__SVFloat16_t'
// CHECK: TypedefDecl {{.*}} implicit __SVFloat32_t '__SVFloat32_t'
-// CHECK-NEXT: -BuiltinType {{.*}} '__SVFloat32_t'
+// CHECK-NEXT: -typeDetails: BuiltinType {{.*}} '__SVFloat32_t'
// CHECK: TypedefDecl {{.*}} implicit __SVFloat64_t '__SVFloat64_t'
-// CHECK-NEXT: -BuiltinType {{.*}} '__SVFloat64_t'
+// CHECK-NEXT: -typeDetails: BuiltinType {{.*}} '__SVFloat64_t'
// CHECK: TypedefDecl {{.*}} implicit __SVBfloat16_t '__SVBfloat16_t'
-// CHECK-NEXT: -BuiltinType {{.*}} '__SVBfloat16_t'
+// CHECK-NEXT: -typeDetails: BuiltinType {{.*}} '__SVBfloat16_t'
// CHECK: TypedefDecl {{.*}} implicit __SVBool_t '__SVBool_t'
-// CHECK-NEXT: -BuiltinType {{.*}} '__SVBool_t'
+// CHECK-NEXT: -typeDetails: BuiltinType {{.*}} '__SVBool_t'
// CHECK: TypedefDecl {{.*}} implicit __SVCount_t '__SVCount_t'
-// CHECK-NEXT: -BuiltinType {{.*}} '__SVCount_t'
+// CHECK-NEXT: -typeDetails: BuiltinType {{.*}} '__SVCount_t'
diff --git a/clang/test/AST/ast-dump-amdgpu-types.c b/clang/test/AST/ast-dump-amdgpu-types.c
index e032d678f1a09..2f3720df8e54d 100644
--- a/clang/test/AST/ast-dump-amdgpu-types.c
+++ b/clang/test/AST/ast-dump-amdgpu-types.c
@@ -7,4 +7,4 @@
// RUN: %clang_cc1 -x c -triple amdgcn -include-pch %t -ast-dump-all -ast-dump-filter __amdgpu_buffer_rsrc_t /dev/null | sed -e "s/ <undeserialized declarations>//" -e "s/ imported//" | FileCheck %s
// CHECK: TypedefDecl {{.*}} implicit __amdgpu_buffer_rsrc_t
-// CHECK-NEXT: -BuiltinType {{.*}} '__amdgpu_buffer_rsrc_t'
+// CHECK-NEXT: -typeDetails: BuiltinType {{.*}} '__amdgpu_buffer_rsrc_t'
diff --git a/clang/test/AST/ast-dump-arm-attr.c b/clang/test/AST/ast-dump-arm-attr.c
index 78f557d4eb0b1..ab4eb96c9442b 100644
--- a/clang/test/AST/ast-dump-arm-attr.c
+++ b/clang/test/AST/ast-dump-arm-attr.c
@@ -18,7 +18,7 @@
__attribute__((interrupt)) void Test(void);
// CHECK: FunctionDecl{{.*}}Test
-// CHECK-NEXT: ARMInterruptAttr
+// CHECK-NEXT: attrDetails: ARMInterruptAttr
typedef int (*CmseTest)(int a) __attribute__((cmse_nonsecure_call));
// CHECK-CMSE: TypedefDecl{{.*}}CmseTest{{.*}}__attribute__((cmse_nonsecure_call))
diff --git a/clang/test/AST/ast-dump-array.cpp b/clang/test/AST/ast-dump-array.cpp
index 418e4292680ee..d6dfcac3f7a7c 100644
--- a/clang/test/AST/ast-dump-array.cpp
+++ b/clang/test/AST/ast-dump-array.cpp
@@ -14,18 +14,16 @@ void testArrayInitExpr()
auto l = [a]{
};
// CHECK: |-ArrayInitLoopExpr 0x{{[^ ]*}} <col:15> 'int[10]'
+ // CHECK: | |-OpaqueValueExpr 0x{{[^ ]*}} <col:15> 'int[10]' lvalue
+ // CHECK: | | `-DeclRefExpr 0x{{[^ ]*}} <col:15> 'int[10]' lvalue Var 0x{{[^ ]*}} 'a' 'int[10]'
+ // CHECK: | `-ImplicitCastExpr 0x{{[^ ]*}} <col:15> 'int' <LValueToRValue>
+ // CHECK: | `-ArraySubscriptExpr 0x{{[^ ]*}} <col:15> 'int' lvalue
+ // CHECK: | |-ImplicitCastExpr 0x{{[^ ]*}} <col:15> 'int *' <ArrayToPointerDecay>
+ // CHECK: | | `-OpaqueValueExpr 0x{{[^ ]*}} <col:15> 'int[10]' lvalue
+ // CHECK: | | `-DeclRefExpr 0x{{[^ ]*}} <col:15> 'int[10]' lvalue Var 0x{{[^ ]*}} 'a' 'int[10]'
// CHECK: | `-ArrayInitIndexExpr 0x{{[^ ]*}} <<invalid sloc>> 'unsigned long'
}
-template<typename T, int Size>
-class array {
- T data[Size];
-
- using array_T_size = T[Size];
- // CHECK: `-DependentSizedArrayType 0x{{[^ ]*}} 'T[Size]' dependent <col:25, col:30>
- using const_array_T_size = const T[Size];
- // CHECK: `-DependentSizedArrayType 0x{{[^ ]*}} 'const T[Size]' dependent <col:37, col:42>
-};
struct V {};
template <typename U, typename Idx, int N>
diff --git a/clang/test/AST/ast-dump-attr-json.cpp b/clang/test/AST/ast-dump-attr-json.cpp
index 883e584bfedf0..c3426dfbed690 100644
--- a/clang/test/AST/ast-dump-attr-json.cpp
+++ b/clang/test/AST/ast-dump-attr-json.cpp
@@ -1,531 +1,654 @@
-// RUN: %clang_cc1 -triple x86_64-pc-linux -Wdocumentation -ast-dump=json %s | FileCheck %s
-
-int global_decl;
-extern __attribute__((alias("global_decl"))) int global_alias;
-
-void cleanup_function(int*);
-void some() {
- __attribute__((cleanup(cleanup_function))) int var;
-}
-
-__attribute__((deprecated)) int deprecated_var0;
-__attribute__((deprecated("reason"))) int deprecated_var1;
-__attribute__((deprecated("reason", "replacement"))) int deprecated_var2;
-
-__attribute__((unavailable)) int unavailable_var0;
-__attribute__((unavailable("reason"))) int unavailable_var1;
-
-__attribute__ ((section ("SECTION_NAME"))) int section_var;
-
-__attribute__ ((visibility ("hidden"))) int visibility_var;
-
-__thread __attribute__ ((tls_model ("local-exec"))) int tls_model_var;
-
-// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
-// using --filters=VarDecl
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 97,
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 3,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 11
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 93,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 97,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 11
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "global_decl",
-// CHECK-NEXT: "mangledName": "global_decl",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 159,
-// CHECK-NEXT: "line": 4,
-// CHECK-NEXT: "col": 50,
-// CHECK-NEXT: "tokLen": 12
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 110,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 159,
-// CHECK-NEXT: "col": 50,
-// CHECK-NEXT: "tokLen": 12
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "global_alias",
-// CHECK-NEXT: "mangledName": "global_alias",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "storageClass": "extern",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "AliasAttr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 132,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 151,
-// CHECK-NEXT: "col": 42,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "aliasee": "global_decl"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 266,
-// CHECK-NEXT: "col": 50,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 219,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 266,
-// CHECK-NEXT: "col": 50,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "var",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CleanupAttr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 234,
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 7
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 258,
-// CHECK-NEXT: "col": 42,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "cleanup_function": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "name": "cleanup_function",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (int *)"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 306,
-// CHECK-NEXT: "line": 11,
-// CHECK-NEXT: "col": 33,
-// CHECK-NEXT: "tokLen": 15
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 274,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 306,
-// CHECK-NEXT: "col": 33,
-// CHECK-NEXT: "tokLen": 15
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "deprecated_var0",
-// CHECK-NEXT: "mangledName": "deprecated_var0",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeprecatedAttr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 289,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 289,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 365,
-// CHECK-NEXT: "line": 12,
-// CHECK-NEXT: "col": 43,
-// CHECK-NEXT: "tokLen": 15
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 323,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 365,
-// CHECK-NEXT: "col": 43,
-// CHECK-NEXT: "tokLen": 15
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "deprecated_var1",
-// CHECK-NEXT: "mangledName": "deprecated_var1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeprecatedAttr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 338,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 357,
-// CHECK-NEXT: "col": 35,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "message": "reason"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 439,
-// CHECK-NEXT: "line": 13,
-// CHECK-NEXT: "col": 58,
-// CHECK-NEXT: "tokLen": 15
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 382,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 439,
-// CHECK-NEXT: "col": 58,
-// CHECK-NEXT: "tokLen": 15
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "deprecated_var2",
-// CHECK-NEXT: "mangledName": "deprecated_var2",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeprecatedAttr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 397,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 431,
-// CHECK-NEXT: "col": 50,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "message": "reason",
-// CHECK-NEXT: "replacement": "replacement"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 490,
-// CHECK-NEXT: "line": 15,
-// CHECK-NEXT: "col": 34,
-// CHECK-NEXT: "tokLen": 16
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 457,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 490,
-// CHECK-NEXT: "col": 34,
-// CHECK-NEXT: "tokLen": 16
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "unavailable_var0",
-// CHECK-NEXT: "mangledName": "unavailable_var0",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnavailableAttr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 472,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 11
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 472,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 11
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 551,
-// CHECK-NEXT: "line": 16,
-// CHECK-NEXT: "col": 44,
-// CHECK-NEXT: "tokLen": 16
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 508,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 551,
-// CHECK-NEXT: "col": 44,
-// CHECK-NEXT: "tokLen": 16
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "unavailable_var1",
-// CHECK-NEXT: "mangledName": "unavailable_var1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnavailableAttr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 523,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 11
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 543,
-// CHECK-NEXT: "col": 36,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "message": "reason"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 617,
-// CHECK-NEXT: "line": 18,
-// CHECK-NEXT: "col": 48,
-// CHECK-NEXT: "tokLen": 11
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 570,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 617,
-// CHECK-NEXT: "col": 48,
-// CHECK-NEXT: "tokLen": 11
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "section_var",
-// CHECK-NEXT: "mangledName": "section_var",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "SectionAttr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 586,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 7
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 609,
-// CHECK-NEXT: "col": 40,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "section_name": "SECTION_NAME"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 675,
-// CHECK-NEXT: "line": 20,
-// CHECK-NEXT: "col": 45,
-// CHECK-NEXT: "tokLen": 14
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 631,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 675,
-// CHECK-NEXT: "col": 45,
-// CHECK-NEXT: "tokLen": 14
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "visibility_var",
-// CHECK-NEXT: "mangledName": "visibility_var",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VisibilityAttr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 647,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 667,
-// CHECK-NEXT: "col": 37,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "visibility": "hidden"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 748,
-// CHECK-NEXT: "line": 22,
-// CHECK-NEXT: "col": 57,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 692,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 748,
-// CHECK-NEXT: "col": 57,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "tls_model_var",
-// CHECK-NEXT: "mangledName": "tls_model_var",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "tls": "static",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TLSModelAttr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 717,
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 9
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 740,
-// CHECK-NEXT: "col": 49,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "tls_model": "local-exec"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
+// RUN: %clang_cc1 -triple x86_64-pc-linux -Wdocumentation -ast-dump=json %s | FileCheck %s
+
+int global_decl;
+extern __attribute__((alias("global_decl"))) int global_alias;
+
+void cleanup_function(int*);
+void some() {
+ __attribute__((cleanup(cleanup_function))) int var;
+}
+
+__attribute__((deprecated)) int deprecated_var0;
+__attribute__((deprecated("reason"))) int deprecated_var1;
+__attribute__((deprecated("reason", "replacement"))) int deprecated_var2;
+
+__attribute__((unavailable)) int unavailable_var0;
+__attribute__((unavailable("reason"))) int unavailable_var1;
+
+__attribute__ ((section ("SECTION_NAME"))) int section_var;
+
+__attribute__ ((visibility ("hidden"))) int visibility_var;
+
+__thread __attribute__ ((tls_model ("local-exec"))) int tls_model_var;
+
+// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
+// using --filters=VarDecl
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 99,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 3,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 11
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 95,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 99,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 11
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "global_decl",
+// CHECK-NEXT: "mangledName": "global_decl",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 162,
+// CHECK-NEXT: "line": 4,
+// CHECK-NEXT: "col": 50,
+// CHECK-NEXT: "tokLen": 12
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 113,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 162,
+// CHECK-NEXT: "col": 50,
+// CHECK-NEXT: "tokLen": 12
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "global_alias",
+// CHECK-NEXT: "mangledName": "global_alias",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "storageClass": "extern",
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "AliasAttr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 135,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 154,
+// CHECK-NEXT: "col": 42,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "aliasee": "global_decl"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 273,
+// CHECK-NEXT: "col": 50,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 226,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 273,
+// CHECK-NEXT: "col": 50,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "var",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CleanupAttr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 241,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 7
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 265,
+// CHECK-NEXT: "col": 42,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "cleanup_function": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "name": "cleanup_function",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (int *)"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 316,
+// CHECK-NEXT: "line": 11,
+// CHECK-NEXT: "col": 33,
+// CHECK-NEXT: "tokLen": 15
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 284,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 316,
+// CHECK-NEXT: "col": 33,
+// CHECK-NEXT: "tokLen": 15
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "deprecated_var0",
+// CHECK-NEXT: "mangledName": "deprecated_var0",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeprecatedAttr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 299,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 299,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 376,
+// CHECK-NEXT: "line": 12,
+// CHECK-NEXT: "col": 43,
+// CHECK-NEXT: "tokLen": 15
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 334,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 376,
+// CHECK-NEXT: "col": 43,
+// CHECK-NEXT: "tokLen": 15
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "deprecated_var1",
+// CHECK-NEXT: "mangledName": "deprecated_var1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeprecatedAttr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 349,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 368,
+// CHECK-NEXT: "col": 35,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "message": "reason"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 451,
+// CHECK-NEXT: "line": 13,
+// CHECK-NEXT: "col": 58,
+// CHECK-NEXT: "tokLen": 15
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 394,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 451,
+// CHECK-NEXT: "col": 58,
+// CHECK-NEXT: "tokLen": 15
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "deprecated_var2",
+// CHECK-NEXT: "mangledName": "deprecated_var2",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeprecatedAttr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 409,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 443,
+// CHECK-NEXT: "col": 50,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "message": "reason",
+// CHECK-NEXT: "replacement": "replacement"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 504,
+// CHECK-NEXT: "line": 15,
+// CHECK-NEXT: "col": 34,
+// CHECK-NEXT: "tokLen": 16
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 471,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 504,
+// CHECK-NEXT: "col": 34,
+// CHECK-NEXT: "tokLen": 16
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "unavailable_var0",
+// CHECK-NEXT: "mangledName": "unavailable_var0",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UnavailableAttr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 486,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 11
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 486,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 11
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 566,
+// CHECK-NEXT: "line": 16,
+// CHECK-NEXT: "col": 44,
+// CHECK-NEXT: "tokLen": 16
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 523,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 566,
+// CHECK-NEXT: "col": 44,
+// CHECK-NEXT: "tokLen": 16
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "unavailable_var1",
+// CHECK-NEXT: "mangledName": "unavailable_var1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UnavailableAttr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 538,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 11
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 558,
+// CHECK-NEXT: "col": 36,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "message": "reason"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 634,
+// CHECK-NEXT: "line": 18,
+// CHECK-NEXT: "col": 48,
+// CHECK-NEXT: "tokLen": 11
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 587,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 634,
+// CHECK-NEXT: "col": 48,
+// CHECK-NEXT: "tokLen": 11
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "section_var",
+// CHECK-NEXT: "mangledName": "section_var",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "SectionAttr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 603,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 7
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 626,
+// CHECK-NEXT: "col": 40,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "section_name": "SECTION_NAME"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 694,
+// CHECK-NEXT: "line": 20,
+// CHECK-NEXT: "col": 45,
+// CHECK-NEXT: "tokLen": 14
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 650,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 694,
+// CHECK-NEXT: "col": 45,
+// CHECK-NEXT: "tokLen": 14
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "visibility_var",
+// CHECK-NEXT: "mangledName": "visibility_var",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VisibilityAttr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 666,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 686,
+// CHECK-NEXT: "col": 37,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "visibility": "hidden"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 769,
+// CHECK-NEXT: "line": 22,
+// CHECK-NEXT: "col": 57,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 713,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 769,
+// CHECK-NEXT: "col": 57,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "tls_model_var",
+// CHECK-NEXT: "mangledName": "tls_model_var",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "tls": "static",
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TLSModelAttr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 738,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 9
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 761,
+// CHECK-NEXT: "col": 49,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "tls_model": "local-exec"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
diff --git a/clang/test/AST/ast-dump-attr-type.cpp b/clang/test/AST/ast-dump-attr-type.cpp
index 78a3b660bbe60..b4e1f384d4bcc 100644
--- a/clang/test/AST/ast-dump-attr-type.cpp
+++ b/clang/test/AST/ast-dump-attr-type.cpp
@@ -4,21 +4,21 @@ int * _Nonnull x;
using Ty = decltype(x);
// CHECK: TypeAliasDecl 0x{{[^ ]*}} <line:4:1, col:22> col:7 Ty 'decltype(x)':'int *'
-// CHECK-NEXT: `-DecltypeType 0x{{[^ ]*}} 'decltype(x)' sugar
+// CHECK-NEXT: `-typeDetails: DecltypeType 0x{{[^ ]*}} 'decltype(x)' sugar
// CHECK-NEXT: |-DeclRefExpr 0x{{[^ ]*}} <col:21> 'int * _Nonnull':'int *' lvalue Var 0x{{[^ ]*}} 'x' 'int * _Nonnull':'int *' non_odr_use_unevaluated
-// CHECK-NEXT: `-AttributedType 0x{{[^ ]*}} 'int * _Nonnull' sugar
-// CHECK-NEXT: `-PointerType 0x{{[^ ]*}} 'int *'
-// CHECK-NEXT: `-BuiltinType 0x{{[^ ]*}} 'int'
-// CHECK-NOT: `-PointerType
+// CHECK-NEXT: `-typeDetails: AttributedType 0x{{[^ ]*}} 'int * _Nonnull' sugar
+// CHECK-NEXT: `-typeDetails: PointerType 0x{{[^ ]*}} 'int *'
+// CHECK-NEXT: `-typeDetails: BuiltinType 0x{{[^ ]*}} 'int'
+
[[clang::address_space(3)]] int *y;
using Ty1 = decltype(y);
// CHECK: TypeAliasDecl 0x{{[^ ]*}} <line:15:1, col:23> col:7 Ty1 'decltype(y)':'__attribute__((address_space(3))) int *'
-// CHECK-NEXT: `-DecltypeType 0x{{[^ ]*}} 'decltype(y)' sugar
+// CHECK-NEXT: `-typeDetails: DecltypeType 0x{{[^ ]*}} 'decltype(y)' sugar
// CHECK-NEXT: |-DeclRefExpr 0x{{[^ ]*}} <col:22> '__attribute__((address_space(3))) int *' lvalue Var 0x{{[^ ]*}} 'y' '__attribute__((address_space(3))) int *' non_odr_use_unevaluated
-// CHECK-NEXT: `-PointerType 0x{{[^ ]*}} '__attribute__((address_space(3))) int *'
-// CHECK-NEXT: `-AttributedType 0x{{[^ ]*}} '__attribute__((address_space(3))) int' sugar
-// CHECK-NEXT |-BuiltinType 0x{{[^ ]*}} 'int'
-// CHECK-NEXT `-QualType 0x{{[^ ]*}} '__attribute__((address_space(3))) int' __attribute__((address_space(3)))
-// CHECK-NEXT `-BuiltinType 0x{{[^ ]*}} 'int'
+// CHECK-NEXT: `-typeDetails: PointerType 0x{{[^ ]*}} '__attribute__((address_space(3))) int *'
+// CHECK-NEXT: `-typeDetails: AttributedType 0x{{[^ ]*}} '__attribute__((address_space(3))) int' sugar
+// CHECK-NEXT |-typeDetails: BuiltinType 0x{{[^ ]*}} 'int'
+// CHECK-NEXT `-typeDetails: QualType 0x{{[^ ]*}} '__attribute__((address_space(3))) int' __attribute__((address_space(3)))
+// CHECK-NEXT `-typeDetails: BuiltinType 0x{{[^ ]*}} 'int'
diff --git a/clang/test/AST/ast-dump-attr.cpp b/clang/test/AST/ast-dump-attr.cpp
index f5a7481571421..5765b5b43993f 100644
--- a/clang/test/AST/ast-dump-attr.cpp
+++ b/clang/test/AST/ast-dump-attr.cpp
@@ -1,298 +1,331 @@
-// Test without serialization:
-// RUN: %clang_cc1 -triple x86_64-pc-linux -std=c++11 -Wno-deprecated-declarations -ast-dump -ast-dump-filter Test %s \
-// RUN: | FileCheck --strict-whitespace %s
-//
-// Test with serialization:
-// RUN: %clang_cc1 -triple x86_64-pc-linux -std=c++11 -Wno-deprecated-declarations -emit-pch -o %t %s
-// RUN: %clang_cc1 -x c++ -triple x86_64-pc-linux -std=c++11 -Wno-deprecated-declarations \
-// RUN: -include-pch %t -ast-dump-all -ast-dump-filter Test /dev/null \
-// RUN: | sed -e "s/ <undeserialized declarations>//" -e "s/ imported//" \
-// RUN: | FileCheck --strict-whitespace %s
-
-int TestLocation
-__attribute__((unused));
-// CHECK: VarDecl{{.*}}TestLocation
-// CHECK-NEXT: UnusedAttr 0x{{[^ ]*}} <line:[[@LINE-2]]:16>
-
-int TestIndent
-__attribute__((unused));
-// CHECK: {{^}}VarDecl{{.*TestIndent[^()]*$}}
-// CHECK-NEXT: {{^}}`-UnusedAttr{{[^()]*$}}
-
-void TestAttributedStmt() {
- switch (1) {
- case 1:
- [[clang::fallthrough]];
- case 2:
- ;
- }
-}
-// CHECK: FunctionDecl{{.*}}TestAttributedStmt
-// CHECK: AttributedStmt
-// CHECK-NEXT: FallThroughAttr
-// CHECK-NEXT: NullStmt
-
-[[clang::warn_unused_result]] int TestCXX11DeclAttr();
-// CHECK: FunctionDecl{{.*}}TestCXX11DeclAttr
-// CHECK-NEXT: WarnUnusedResultAttr
-
-int TestAlignedNull __attribute__((aligned));
-// CHECK: VarDecl{{.*}}TestAlignedNull
-// CHECK-NEXT: AlignedAttr {{.*}} aligned
-// CHECK-NEXT: <<<NULL>>>
-
-int TestAlignedExpr __attribute__((aligned(4)));
-// CHECK: VarDecl{{.*}}TestAlignedExpr
-// CHECK-NEXT: AlignedAttr {{.*}} aligned
-// CHECK-NEXT: ConstantExpr
-// CHECK-NEXT: value: Int 4
-// CHECK-NEXT: IntegerLiteral
-
-int TestEnum __attribute__((visibility("default")));
-// CHECK: VarDecl{{.*}}TestEnum
-// CHECK-NEXT: VisibilityAttr{{.*}} Default
-
-class __attribute__((lockable)) Mutex {
-} mu1, mu2;
-int TestExpr __attribute__((guarded_by(mu1)));
-// CHECK: VarDecl{{.*}}TestExpr
-// CHECK-NEXT: GuardedByAttr
-// CHECK-NEXT: DeclRefExpr{{.*}}mu1
-
-class Mutex TestVariadicExpr __attribute__((acquired_after(mu1, mu2)));
-// CHECK: VarDecl{{.*}}TestVariadicExpr
-// CHECK: AcquiredAfterAttr
-// CHECK-NEXT: DeclRefExpr{{.*}}mu1
-// CHECK-NEXT: DeclRefExpr{{.*}}mu2
-
-void function1(void *) {
- int TestFunction __attribute__((cleanup(function1)));
-}
-// CHECK: VarDecl{{.*}}TestFunction
-// CHECK-NEXT: CleanupAttr{{.*}} Function{{.*}}function1
-
-void TestIdentifier(void *, int)
-__attribute__((pointer_with_type_tag(ident1,1,2)));
-// CHECK: FunctionDecl{{.*}}TestIdentifier
-// CHECK: ArgumentWithTypeTagAttr{{.*}} pointer_with_type_tag ident1
-
-void TestBool(void *, int)
-__attribute__((pointer_with_type_tag(bool1,1,2)));
-// CHECK: FunctionDecl{{.*}}TestBool
-// CHECK: ArgumentWithTypeTagAttr{{.*}}pointer_with_type_tag bool1 1 2 IsPointer
-
-void TestUnsigned(void *, int)
-__attribute__((pointer_with_type_tag(unsigned1,1,2)));
-// CHECK: FunctionDecl{{.*}}TestUnsigned
-// CHECK: ArgumentWithTypeTagAttr{{.*}} pointer_with_type_tag unsigned1 1 2
-
-void TestInt(void) __attribute__((constructor(123)));
-// CHECK: FunctionDecl{{.*}}TestInt
-// CHECK-NEXT: ConstructorAttr{{.*}} 123
-
-static int TestString __attribute__((alias("alias1")));
-// CHECK: VarDecl{{.*}}TestString
-// CHECK-NEXT: AliasAttr{{.*}} "alias1"
-
-extern struct s1 TestType
-__attribute__((type_tag_for_datatype(ident1,int)));
-// CHECK: VarDecl{{.*}}TestType
-// CHECK-NEXT: TypeTagForDatatypeAttr{{.*}} int
-
-void TestLabel() {
-L: __attribute__((unused)) int i;
-// CHECK: LabelStmt{{.*}}'L'
-// CHECK: VarDecl{{.*}}i 'int'
-// CHECK-NEXT: UnusedAttr{{.*}}
-
-M: __attribute(()) int j;
-// CHECK: LabelStmt {{.*}} 'M'
-// CHECK-NEXT: DeclStmt
-// CHECK-NEXT: VarDecl {{.*}} j 'int'
-
-N: __attribute(()) ;
-// CHECK: LabelStmt {{.*}} 'N'
-// CHECK-NEXT: NullStmt
-}
-
-namespace Test {
-extern "C" int printf(const char *format, ...);
-// CHECK: FunctionDecl{{.*}}printf
-// CHECK-NEXT: ParmVarDecl{{.*}}format{{.*}}'const char *'
-// CHECK-NEXT: BuiltinAttr{{.*}}Implicit
-// CHECK-NEXT: FormatAttr{{.*}}Implicit printf 1 2
-
-alignas(8) extern int x;
-extern int x;
-// CHECK: VarDecl{{.*}} x 'int'
-// CHECK: VarDecl{{.*}} x 'int'
-// CHECK-NEXT: AlignedAttr{{.*}} Inherited
-}
-
-namespace TestAligns {
-
-template<typename...T> struct my_union {
- alignas(T...) char buffer[1024];
-};
-
-template<typename...T> struct my_union2 {
- _Alignas(T...) char buffer[1024];
-};
-
-struct alignas(8) A { char c; };
-struct alignas(4) B { short s; };
-struct C { char a[16]; };
-
-// CHECK: ClassTemplateSpecializationDecl {{.*}} struct my_union
-// CHECK: CXXRecordDecl {{.*}} implicit struct my_union
-// CHECK: FieldDecl {{.*}} buffer 'char[1024]'
-// CHECK-NEXT: AlignedAttr {{.*}} alignas 'TestAligns::A'
-// CHECK-NEXT: AlignedAttr {{.*}} alignas 'TestAligns::B'
-// CHECK-NEXT: AlignedAttr {{.*}} alignas 'TestAligns::C'
-my_union<A, B, C> my_union_val;
-
-// CHECK: ClassTemplateSpecializationDecl {{.*}} struct my_union2
-// CHECK: CXXRecordDecl {{.*}} implicit struct my_union2
-// CHECK: FieldDecl {{.*}} buffer 'char[1024]'
-// CHECK-NEXT: AlignedAttr {{.*}} _Alignas 'TestAligns::A'
-// CHECK-NEXT: AlignedAttr {{.*}} _Alignas 'TestAligns::B'
-// CHECK-NEXT: AlignedAttr {{.*}} _Alignas 'TestAligns::C'
-my_union2<A, B, C> my_union2_val;
-
-} // namespace TestAligns
-
-int __attribute__((cdecl)) TestOne(void), TestTwo(void);
-// CHECK: FunctionDecl{{.*}}TestOne{{.*}}__attribute__((cdecl))
-// CHECK: FunctionDecl{{.*}}TestTwo{{.*}}__attribute__((cdecl))
-
-void func() {
- auto Test = []() __attribute__((no_thread_safety_analysis)) {};
- // CHECK: CXXMethodDecl{{.*}}operator() 'void () const'
- // CHECK: NoThreadSafetyAnalysisAttr
-
- // Because GNU's noreturn applies to the function type, and this lambda does
- // not have a capture list, the call operator and the function pointer
- // conversion should both be noreturn, but the method should not contain a
- // NoReturnAttr because the attribute applied to the type.
- auto Test2 = []() __attribute__((noreturn)) { while(1); };
- // CHECK: CXXMethodDecl{{.*}}operator() 'void () __attribute__((noreturn)) const'
- // CHECK-NOT: NoReturnAttr
- // CHECK: CXXConversionDecl{{.*}}operator void (*)() __attribute__((noreturn))
-}
-
-namespace PR20930 {
-struct S {
- struct { int Test __attribute__((deprecated)); };
- // CHECK: FieldDecl{{.*}}Test 'int'
- // CHECK-NEXT: DeprecatedAttr
-};
-
-void f() {
- S s;
- s.Test = 1;
- // CHECK: IndirectFieldDecl{{.*}}Test 'int'
- // CHECK: DeprecatedAttr
-}
-}
-
-struct __attribute__((objc_bridge_related(NSParagraphStyle,,))) TestBridgedRef;
-// CHECK: CXXRecordDecl{{.*}} struct TestBridgedRef
-// CHECK-NEXT: ObjCBridgeRelatedAttr{{.*}} NSParagraphStyle
-
-void TestExternalSourceSymbolAttr1()
-__attribute__((external_source_symbol(language="Swift", defined_in="module", generated_declaration)));
-// CHECK: FunctionDecl{{.*}} TestExternalSourceSymbolAttr1
-// CHECK-NEXT: ExternalSourceSymbolAttr{{.*}} "Swift" "module" GeneratedDeclaration
-
-void TestExternalSourceSymbolAttr2()
-__attribute__((external_source_symbol(defined_in="module", language="Swift")));
-// CHECK: FunctionDecl{{.*}} TestExternalSourceSymbolAttr2
-// CHECK-NEXT: ExternalSourceSymbolAttr{{.*}} "Swift" "module" ""{{$}}
-
-void TestExternalSourceSymbolAttr3()
-__attribute__((external_source_symbol(generated_declaration, language="Objective-C++", defined_in="module")));
-// CHECK: FunctionDecl{{.*}} TestExternalSourceSymbolAttr3
-// CHECK-NEXT: ExternalSourceSymbolAttr{{.*}} "Objective-C++" "module" GeneratedDeclaration
-
-void TestExternalSourceSymbolAttr4()
-__attribute__((external_source_symbol(defined_in="Some external file.cs", generated_declaration, language="C Sharp")));
-// CHECK: FunctionDecl{{.*}} TestExternalSourceSymbolAttr4
-// CHECK-NEXT: ExternalSourceSymbolAttr{{.*}} "C Sharp" "Some external file.cs" GeneratedDeclaration
-
-void TestExternalSourceSymbolAttr5()
-__attribute__((external_source_symbol(generated_declaration, defined_in="module", language="Swift")));
-// CHECK: FunctionDecl{{.*}} TestExternalSourceSymbolAttr5
-// CHECK-NEXT: ExternalSourceSymbolAttr{{.*}} "Swift" "module" GeneratedDeclaration
-
-void TestExternalSourceSymbolAttr6()
-__attribute__((external_source_symbol(generated_declaration, defined_in="module", language="Swift", USR="testUSR")));
-// CHECK: FunctionDecl{{.*}} TestExternalSourceSymbolAttr6
-// CHECK-NEXT: ExternalSourceSymbolAttr{{.*}} "Swift" "module" GeneratedDeclaration "testUSR"
-
-namespace TestNoEscape {
- void noescapeFunc(int *p0, __attribute__((noescape)) int *p1) {}
- // CHECK: `-FunctionDecl{{.*}} noescapeFunc 'void (int *, __attribute__((noescape)) int *)'
- // CHECK-NEXT: ParmVarDecl
- // CHECK-NEXT: ParmVarDecl
- // CHECK-NEXT: NoEscapeAttr
-}
-
-namespace TestSuppress {
- [[gsl::suppress("at-namespace")]];
- // CHECK: NamespaceDecl{{.*}} TestSuppress
- // CHECK-NEXT: EmptyDecl{{.*}}
- // CHECK-NEXT: SuppressAttr{{.*}} at-namespace
- [[gsl::suppress("on-decl")]]
- void TestSuppressFunction();
- // CHECK: FunctionDecl{{.*}} TestSuppressFunction
- // CHECK-NEXT: SuppressAttr{{.*}} on-decl
-
- void f() {
- int *i;
-
- [[gsl::suppress("on-stmt")]] {
- // CHECK: AttributedStmt
- // CHECK-NEXT: SuppressAttr{{.*}} on-stmt
- // CHECK-NEXT: CompoundStmt
- i = reinterpret_cast<int*>(7);
- }
- }
-}
-
-namespace TestLifetimeCategories {
-class [[gsl::Owner(int)]] AOwner{};
-// CHECK: CXXRecordDecl{{.*}} class AOwner
-// CHECK: OwnerAttr {{.*}} int
-class [[gsl::Pointer(int)]] APointer{};
-// CHECK: CXXRecordDecl{{.*}} class APointer
-// CHECK: PointerAttr {{.*}} int
-
-class [[gsl::Pointer]] PointerWithoutArgument{};
-// CHECK: CXXRecordDecl{{.*}} class PointerWithoutArgument
-// CHECK: PointerAttr
-
-class [[gsl::Owner]] OwnerWithoutArgument{};
-// CHECK: CXXRecordDecl{{.*}} class OwnerWithoutArgument
-// CHECK: OwnerAttr
-} // namespace TestLifetimeCategories
-
-// Verify the order of attributes in the Ast. It must reflect the order
-// in the parsed source.
-int mergeAttrTest() __attribute__((deprecated)) __attribute__((warn_unused_result));
-int mergeAttrTest() __attribute__((annotate("test")));
-int mergeAttrTest() __attribute__((unused,no_thread_safety_analysis));
-// CHECK: FunctionDecl{{.*}} mergeAttrTest
-// CHECK-NEXT: DeprecatedAttr
-// CHECK-NEXT: WarnUnusedResultAttr
-
-// CHECK: FunctionDecl{{.*}} mergeAttrTest
-// CHECK-NEXT: DeprecatedAttr{{.*}} Inherited
-// CHECK-NEXT: WarnUnusedResultAttr{{.*}} Inherited
-// CHECK-NEXT: AnnotateAttr{{.*}}
-
-// CHECK: FunctionDecl{{.*}} mergeAttrTest
-// CHECK-NEXT: DeprecatedAttr{{.*}} Inherited
-// CHECK-NEXT: WarnUnusedResultAttr{{.*}} Inherited
-// CHECK-NEXT: AnnotateAttr{{.*}} Inherited
-// CHECK-NEXT: UnusedAttr
-// CHECK-NEXT: NoThreadSafetyAnalysisAttr
+// Test without serialization:
+// RUN: %clang_cc1 -triple x86_64-pc-linux -std=c++11 -Wno-deprecated-declarations -ast-dump -ast-dump-filter Test %s \
+// RUN: | FileCheck --strict-whitespace %s
+//
+// Test with serialization:
+// RUN: %clang_cc1 -triple x86_64-pc-linux -std=c++11 -Wno-deprecated-declarations -emit-pch -o %t %s
+// RUN: %clang_cc1 -x c++ -triple x86_64-pc-linux -std=c++11 -Wno-deprecated-declarations \
+// RUN: -include-pch %t -ast-dump-all -ast-dump-filter Test /dev/null \
+// RUN: | sed -e "s/ <undeserialized declarations>//" -e "s/ imported//" \
+// RUN: | FileCheck --strict-whitespace %s
+
+int TestLocation
+__attribute__((unused));
+// CHECK: VarDecl 0x{{.+}} <{{.+}}> col:5 TestLocation 'int'
+// CHECK-NEXT: typeDetails: BuiltinType
+// CHECK-NEXT: `-attrDetails: UnusedAttr 0x{{.+}} <{{.+}}> unused
+
+int TestIndent
+__attribute__((unused));
+// CHECK: VarDecl 0x{{.+}} <{{.+}}> col:5 TestIndent 'int'
+// CHECK-NEXT: typeDetails: BuiltinType
+// CHECK-NEXT: `-attrDetails: UnusedAttr 0x{{.+}} <{{.+}}> unused
+
+void TestAttributedStmt() {
+ switch (1) {
+ case 1:
+ [[clang::fallthrough]];
+ case 2:
+ ;
+ }
+}
+// CHECK: FunctionDecl{{.*}}TestAttributedStmt
+// CHECK-NEXT: `-CompoundStmt 0x{{.+}} <{{.+}}>
+// CHECK-NEXT: `-SwitchStmt 0x{{.+}} <{{.+}}>
+// CHECK-NEXT: |-IntegerLiteral 0x{{.+}} <{{.+}}> 'int' 1
+// CHECK-NEXT: `-CompoundStmt 0x{{.+}} <{{.+}}>
+// CHECK-NEXT: |-CaseStmt 0x{{.+}} <{{.+}}>
+// CHECK-NEXT: | |-ConstantExpr 0x{{.+}} <{{.+}}> 'int'
+// CHECK-NEXT: | | |-value: Int 1
+// CHECK-NEXT: | | `-IntegerLiteral 0x{{.+}} <{{.+}}> 'int' 1
+// CHECK-NEXT: | `-AttributedStmt 0x{{.+}} <{{.+}}>
+// CHECK-NEXT: | |-attrDetails: FallThroughAttr 0x{{.+}} <{{.+}}>
+// CHECK-NEXT: | `-NullStmt 0x{{.+}} <{{.+}}>
+// CHECK-NEXT: `-CaseStmt 0x{{.+}} <{{.+}}>
+// CHECK-NEXT: |-ConstantExpr 0x{{.+}} <{{.+}}> 'int'
+// CHECK-NEXT: | |-value: Int 2
+// CHECK-NEXT: | `-IntegerLiteral 0x{{.+}} <{{.+}}> 'int' 2
+// CHECK-NEXT: `-NullStmt 0x{{.+}} <{{.+}}>
+
+[[clang::warn_unused_result]] int TestCXX11DeclAttr();
+// CHECK: FunctionDecl{{.*}}TestCXX11DeclAttr
+// CHECK-NEXT: attrDetails: WarnUnusedResultAttr
+
+int TestAlignedNull __attribute__((aligned));
+// CHECK: VarDecl{{.*}}TestAlignedNull
+// CHECK-NEXT: typeDetails: BuiltinType
+// CHECK-NEXT: attrDetails: AlignedAttr {{.*}} aligned
+// CHECK-NEXT: <<<NULL>>>
+
+int TestAlignedExpr __attribute__((aligned(4)));
+// CHECK: VarDecl{{.*}}TestAlignedExpr
+// CHECK-NEXT: typeDetails: BuiltinType
+// CHECK-NEXT: attrDetails: AlignedAttr {{.*}} aligned
+// CHECK-NEXT: ConstantExpr
+// CHECK-NEXT: value: Int 4
+// CHECK-NEXT: IntegerLiteral
+
+int TestEnum __attribute__((visibility("default")));
+// CHECK: VarDecl{{.*}}TestEnum
+// CHECK-NEXT: typeDetails: BuiltinType
+// CHECK-NEXT: attrDetails: VisibilityAttr{{.*}} Default
+
+class __attribute__((lockable)) Mutex {
+} mu1, mu2;
+int TestExpr __attribute__((guarded_by(mu1)));
+// CHECK: VarDecl{{.*}}TestExpr
+// CHECK-NEXT: typeDetails: BuiltinType
+// CHECK-NEXT: attrDetails: GuardedByAttr
+// CHECK-NEXT: DeclRefExpr{{.*}}mu1
+
+class Mutex TestVariadicExpr __attribute__((acquired_after(mu1, mu2)));
+// CHECK: VarDecl{{.*}}TestVariadicExpr
+// CHECK: attrDetails: AcquiredAfterAttr
+// CHECK-NEXT: DeclRefExpr{{.*}}mu1
+// CHECK-NEXT: DeclRefExpr{{.*}}mu2
+
+void function1(void *) {
+ int TestFunction __attribute__((cleanup(function1)));
+}
+// CHECK: VarDecl{{.*}}TestFunction
+// CHECK-NEXT: typeDetails: BuiltinType
+// CHECK-NEXT: attrDetails: CleanupAttr{{.*}} Function{{.*}}function1
+
+void TestIdentifier(void *, int)
+__attribute__((pointer_with_type_tag(ident1,1,2)));
+// CHECK: FunctionDecl{{.*}}TestIdentifier
+// CHECK: typeDetails: BuiltinType
+// CHECK: attrDetails: ArgumentWithTypeTagAttr{{.*}} pointer_with_type_tag ident1
+
+void TestBool(void *, int)
+__attribute__((pointer_with_type_tag(bool1,1,2)));
+// CHECK: FunctionDecl{{.*}}TestBool
+// CHECK: typeDetails: BuiltinType
+// CHECK: attrDetails: ArgumentWithTypeTagAttr{{.*}}pointer_with_type_tag bool1 1 2 IsPointer
+
+void TestUnsigned(void *, int)
+__attribute__((pointer_with_type_tag(unsigned1,1,2)));
+// CHECK: FunctionDecl{{.*}}TestUnsigned
+// CHECK: typeDetails: BuiltinType
+// CHECK: attrDetails: ArgumentWithTypeTagAttr{{.*}} pointer_with_type_tag unsigned1 1 2
+
+void TestInt(void) __attribute__((constructor(123)));
+// CHECK: FunctionDecl{{.*}}TestInt
+// CHECK-NEXT: attrDetails: ConstructorAttr{{.*}} 123
+
+static int TestString __attribute__((alias("alias1")));
+// CHECK: VarDecl{{.*}}TestString
+// CHECK-NEXT: typeDetails: BuiltinType
+// CHECK-NEXT: attrDetails: AliasAttr{{.*}} "alias1"
+
+extern struct s1 TestType
+__attribute__((type_tag_for_datatype(ident1,int)));
+// CHECK: VarDecl{{.*}}TestType
+// CHECK-NEXT: |-typeDetails: ElaboratedType 0x{{.+}} 'struct s1' sugar
+// CHECK-NEXT: | `-typeDetails: RecordType 0x{{.+}} 's1'
+// CHECK-NEXT: | `-CXXRecord 0x{{.+}} 's1'
+// CHECK-NEXT: `-attrDetails: TypeTagForDatatypeAttr 0x{{.+}} <{{.+}}> ident1 int
+
+void TestLabel() {
+L: __attribute__((unused)) int i;
+// CHECK: LabelStmt{{.*}}'L'
+// CHECK: VarDecl{{.*}}i 'int'
+// CHECK-NEXT: typeDetails: BuiltinType
+// CHECK-NEXT: attrDetails: UnusedAttr{{.*}}
+
+M: __attribute(()) int j;
+// CHECK: LabelStmt {{.*}} 'M'
+// CHECK-NEXT: DeclStmt
+// CHECK-NEXT: VarDecl {{.*}} j 'int'
+
+N: __attribute(()) ;
+// CHECK: LabelStmt {{.*}} 'N'
+// CHECK-NEXT: NullStmt
+}
+
+namespace Test {
+extern "C" int printf(const char *format, ...);
+// CHECK: | `-FunctionDecl 0x{{.+}} <{{.+}}> col:16 printf 'int (const char *, ...)'
+// CHECK-NEXT: | |-ParmVarDecl 0x{{.+}} <{{.+}}> col:35 format 'const char *'
+// CHECK-NEXT: | | `-typeDetails: PointerType 0x{{.+}} 'const char *'
+// CHECK-NEXT: | | `-qualTypeDetail: QualType 0x{{.+}} 'const char' const
+// CHECK-NEXT: | | `-typeDetails: BuiltinType 0x{{.+}} 'char'
+// CHECK-NEXT: | |-attrDetails: BuiltinAttr 0x{{.+}} <{{.+}}>> Implicit 991
+// CHECK-NEXT: | `-attrDetails: FormatAttr 0x{{.+}} <{{.+}}> Implicit printf 1 2
+
+alignas(8) extern int x;
+extern int x;
+// CHECK: VarDecl{{.*}} x 'int'
+// CHECK: VarDecl{{.*}} x 'int'
+// CHECK-NEXT: typeDetails: BuiltinType
+// CHECK-NEXT: attrDetails: AlignedAttr{{.*}} Inherited
+}
+
+namespace TestAligns {
+
+template<typename...T> struct my_union {
+ alignas(T...) char buffer[1024];
+};
+
+template<typename...T> struct my_union2 {
+ _Alignas(T...) char buffer[1024];
+};
+
+struct alignas(8) A { char c; };
+struct alignas(4) B { short s; };
+struct C { char a[16]; };
+
+// CHECK: ClassTemplateSpecializationDecl {{.*}} struct my_union
+
+// CHECK: CXXRecordDecl {{.*}} implicit struct my_union
+// CHECK: FieldDecl {{.*}} buffer 'char[1024]'
+// CHECK-NEXT: attrDetails: AlignedAttr {{.*}} alignas 'TestAligns::A'
+// CHECK-NEXT: attrDetails: AlignedAttr {{.*}} alignas 'TestAligns::B'
+// CHECK-NEXT: attrDetails: AlignedAttr {{.*}} alignas 'TestAligns::C'
+my_union<A, B, C> my_union_val;
+
+// CHECK: ClassTemplateSpecializationDecl {{.*}} struct my_union2
+// CHECK: CXXRecordDecl {{.*}} implicit struct my_union2
+// CHECK: FieldDecl {{.*}} buffer 'char[1024]'
+// CHECK-NEXT: attrDetails: AlignedAttr {{.*}} _Alignas 'TestAligns::A'
+// CHECK-NEXT: attrDetails: AlignedAttr {{.*}} _Alignas 'TestAligns::B'
+// CHECK-NEXT: attrDetails: AlignedAttr {{.*}} _Alignas 'TestAligns::C'
+my_union2<A, B, C> my_union2_val;
+
+} // namespace TestAligns
+
+int __attribute__((cdecl)) TestOne(void), TestTwo(void);
+// CHECK: FunctionDecl{{.*}}TestOne{{.*}}__attribute__((cdecl))
+// CHECK: FunctionDecl{{.*}}TestTwo{{.*}}__attribute__((cdecl))
+
+void func() {
+ auto Test = []() __attribute__((no_thread_safety_analysis)) {};
+ // CHECK: CXXMethodDecl{{.*}}operator() 'void () const'
+ // CHECK: NoThreadSafetyAnalysisAttr
+
+ // Because GNU's noreturn applies to the function type, and this lambda does
+ // not have a capture list, the call operator and the function pointer
+ // conversion should both be noreturn, but the method should not contain a
+ // NoReturnAttr because the attribute applied to the type.
+ auto Test2 = []() __attribute__((noreturn)) { while(1); };
+ // CHECK: CXXMethodDecl{{.*}}operator() 'void () __attribute__((noreturn)) const'
+ // CHECK-NOT: NoReturnAttr
+ // CHECK: CXXConversionDecl{{.*}}operator void (*)() __attribute__((noreturn))
+}
+
+namespace PR20930 {
+struct S {
+ struct { int Test __attribute__((deprecated)); };
+ // CHECK: FieldDecl{{.*}}Test 'int'
+ // CHECK-NEXT: DeprecatedAttr
+};
+
+void f() {
+ S s;
+ s.Test = 1;
+ // CHECK: IndirectFieldDecl{{.*}}Test 'int'
+ // CHECK: attrDetails: DeprecatedAttr
+}
+}
+
+struct __attribute__((objc_bridge_related(NSParagraphStyle,,))) TestBridgedRef;
+// CHECK: CXXRecordDecl{{.*}} struct TestBridgedRef
+// CHECK-NEXT: attrDetails: ObjCBridgeRelatedAttr{{.*}} NSParagraphStyle
+
+void TestExternalSourceSymbolAttr1()
+__attribute__((external_source_symbol(language="Swift", defined_in="module", generated_declaration)));
+// CHECK: FunctionDecl{{.*}} TestExternalSourceSymbolAttr1
+// CHECK-NEXT: attrDetails: ExternalSourceSymbolAttr{{.*}} "Swift" "module" GeneratedDeclaration
+
+void TestExternalSourceSymbolAttr2()
+__attribute__((external_source_symbol(defined_in="module", language="Swift")));
+// CHECK: FunctionDecl{{.*}} TestExternalSourceSymbolAttr2
+// CHECK-NEXT: attrDetails: ExternalSourceSymbolAttr{{.*}} "Swift" "module" ""{{$}}
+
+void TestExternalSourceSymbolAttr3()
+__attribute__((external_source_symbol(generated_declaration, language="Objective-C++", defined_in="module")));
+// CHECK: FunctionDecl{{.*}} TestExternalSourceSymbolAttr3
+// CHECK-NEXT: attrDetails: ExternalSourceSymbolAttr{{.*}} "Objective-C++" "module" GeneratedDeclaration
+
+void TestExternalSourceSymbolAttr4()
+__attribute__((external_source_symbol(defined_in="Some external file.cs", generated_declaration, language="C Sharp")));
+// CHECK: FunctionDecl{{.*}} TestExternalSourceSymbolAttr4
+// CHECK-NEXT: attrDetails: ExternalSourceSymbolAttr{{.*}} "C Sharp" "Some external file.cs" GeneratedDeclaration
+
+void TestExternalSourceSymbolAttr5()
+__attribute__((external_source_symbol(generated_declaration, defined_in="module", language="Swift")));
+// CHECK: FunctionDecl{{.*}} TestExternalSourceSymbolAttr5
+// CHECK-NEXT: attrDetails: ExternalSourceSymbolAttr{{.*}} "Swift" "module" GeneratedDeclaration
+
+void TestExternalSourceSymbolAttr6()
+__attribute__((external_source_symbol(generated_declaration, defined_in="module", language="Swift", USR="testUSR")));
+// CHECK: FunctionDecl{{.*}} TestExternalSourceSymbolAttr6
+// CHECK-NEXT: attrDetails: ExternalSourceSymbolAttr{{.*}} "Swift" "module" GeneratedDeclaration "testUSR"
+
+namespace TestNoEscape {
+ void noescapeFunc(int *p0, __attribute__((noescape)) int *p1) {}
+ // CHECK: `-FunctionDecl{{.*}} noescapeFunc 'void (int *, __attribute__((noescape)) int *)'
+ // CHECK: ParmVarDecl
+ // CHECK: ParmVarDecl
+ // CHECK: -attrDetails: NoEscapeAttr
+}
+
+namespace TestSuppress {
+ [[gsl::suppress("at-namespace")]];
+ // CHECK: NamespaceDecl{{.*}} TestSuppress
+ // CHECK-NEXT: EmptyDecl{{.*}}
+ // CHECK-NEXT: SuppressAttr{{.*}} at-namespace
+ [[gsl::suppress("on-decl")]]
+ void TestSuppressFunction();
+ // CHECK: FunctionDecl{{.*}} TestSuppressFunction
+ // CHECK-NEXT: SuppressAttr{{.*}} on-decl
+
+ void f() {
+ int *i;
+
+ [[gsl::suppress("on-stmt")]] {
+ // CHECK: AttributedStmt
+ // CHECK-NEXT: SuppressAttr{{.*}} on-stmt
+ // CHECK-NEXT: CompoundStmt
+ i = reinterpret_cast<int*>(7);
+ }
+ }
+}
+
+namespace TestLifetimeCategories {
+class [[gsl::Owner(int)]] AOwner{};
+// CHECK: CXXRecordDecl{{.*}} class AOwner
+// CHECK: attrDetails: OwnerAttr {{.*}} int
+class [[gsl::Pointer(int)]] APointer{};
+// CHECK: CXXRecordDecl{{.*}} class APointer
+// CHECK: attrDetails: PointerAttr {{.*}} int
+
+class [[gsl::Pointer]] PointerWithoutArgument{};
+// CHECK: CXXRecordDecl{{.*}} class PointerWithoutArgument
+// CHECK: attrDetails: PointerAttr
+
+class [[gsl::Owner]] OwnerWithoutArgument{};
+// CHECK: CXXRecordDecl{{.*}} class OwnerWithoutArgument
+// CHECK: attrDetails: OwnerAttr
+} // namespace TestLifetimeCategories
+
+// Verify the order of attributes in the Ast. It must reflect the order
+// in the parsed source.
+int mergeAttrTest() __attribute__((deprecated)) __attribute__((warn_unused_result));
+int mergeAttrTest() __attribute__((annotate("test")));
+int mergeAttrTest() __attribute__((unused,no_thread_safety_analysis));
+// CHECK: FunctionDecl{{.*}} mergeAttrTest
+// CHECK-NEXT: attrDetails: DeprecatedAttr
+// CHECK-NEXT: attrDetails: WarnUnusedResultAttr
+
+// CHECK: FunctionDecl{{.*}} mergeAttrTest
+// CHECK-NEXT: attrDetails: DeprecatedAttr{{.*}} Inherited
+// CHECK-NEXT: attrDetails: WarnUnusedResultAttr{{.*}} Inherited
+// CHECK-NEXT: attrDetails: AnnotateAttr{{.*}}
+
+// CHECK: FunctionDecl{{.*}} mergeAttrTest
+// CHECK-NEXT: attrDetails: DeprecatedAttr{{.*}} Inherited
+// CHECK-NEXT: attrDetails: WarnUnusedResultAttr{{.*}} Inherited
+// CHECK-NEXT: attrDetails: AnnotateAttr{{.*}} Inherited
+// CHECK-NEXT: attrDetails: UnusedAttr
+// CHECK-NEXT: attrDetails: NoThreadSafetyAnalysisAttr
diff --git a/clang/test/AST/ast-dump-attr.m b/clang/test/AST/ast-dump-attr.m
index eef07384b84fa..819e70c730f53 100644
--- a/clang/test/AST/ast-dump-attr.m
+++ b/clang/test/AST/ast-dump-attr.m
@@ -58,11 +58,11 @@ -(void)Test9 [[clang::ns_consumes_self]];
-(void) [[clang::ns_consumes_self]] Test10: (int)Test11;
// CHECK: ObjCMethodDecl{{.*}} Test10: 'void'
// CHECK-NEXT: |-ParmVarDecl{{.*}} Test11 'int'
-// CHECK-NEXT: `-NSConsumesSelfAttr
+// CHECK: `-attrDetails: NSConsumesSelfAttr
-(void)Test12: (int *) [[clang::noescape]] Test13 to:(int)Test14 [[clang::ns_consumes_self]];
// CHECK: ObjCMethodDecl{{.*}} Test12:to: 'void'
// CHECK-NEXT: |-ParmVarDecl{{.*}} Test13 'int *'
-// CHECK-NEXT: | `-NoEscapeAttr
+// CHECK: | `-attrDetails: NoEscapeAttr
// CHECK-NEXT: |-ParmVarDecl{{.*}} Test14 'int'
-// CHECK-NEXT: `-NSConsumesSelfAttr
+// CHECK: `-attrDetails: NSConsumesSelfAttr
@end
diff --git a/clang/test/AST/ast-dump-c-attr.c b/clang/test/AST/ast-dump-c-attr.c
index c8e0d89827f80..3afd3623fe489 100644
--- a/clang/test/AST/ast-dump-c-attr.c
+++ b/clang/test/AST/ast-dump-c-attr.c
@@ -13,42 +13,44 @@
int Test1 [[deprecated]];
// CHECK: VarDecl{{.*}}Test1
-// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} <col:13> "" ""
+// CHECK-NEXT: typeDetails: BuiltinType
+// CHECK-NEXT: attrDetails: DeprecatedAttr 0x{{[^ ]*}} <col:13> "" ""
enum [[deprecated("Frobble")]] Test2 {
Test3 [[deprecated]]
};
// CHECK: EnumDecl{{.*}}Test2
-// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} <col:8, col:28> "Frobble" ""
+// CHECK-NEXT: attrDetails: DeprecatedAttr 0x{{[^ ]*}} <col:8, col:28> "Frobble" ""
// CHECK-NEXT: EnumConstantDecl{{.*}}Test3
-// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} <col:11> "" ""
+// CHECK-NEXT: attrDetails: DeprecatedAttr 0x{{[^ ]*}} <col:11> "" ""
struct [[deprecated]] Test4 {
[[deprecated("Frobble")]] int Test5, Test6;
int Test7 [[deprecated]] : 12;
};
// CHECK: RecordDecl{{.*}}Test4
-// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} <col:10> "" ""
+// CHECK-NEXT: attrDetails: DeprecatedAttr 0x{{[^ ]*}} <col:10> "" ""
// CHECK-NEXT: FieldDecl{{.*}}Test5
-// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} <col:5, col:25> "Frobble" ""
+// CHECK-NEXT: attrDetails: DeprecatedAttr 0x{{[^ ]*}} <col:5, col:25> "Frobble" ""
// CHECK-NEXT: FieldDecl{{.*}}Test6
-// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} <col:5, col:25> "Frobble" ""
+// CHECK-NEXT: attrDetails: DeprecatedAttr 0x{{[^ ]*}} <col:5, col:25> "Frobble" ""
// CHECK-NEXT: FieldDecl{{.*}}Test7
// CHECK-NEXT: ConstantExpr{{.*}}'int'
// CHECK-NEXT: value: Int 12
// CHECK-NEXT: IntegerLiteral{{.*}}'int' 12
-// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} <col:15> "" ""
+// CHECK-NEXT: attrDetails: DeprecatedAttr 0x{{[^ ]*}} <col:15> "" ""
struct [[deprecated]] Test8;
// CHECK: RecordDecl{{.*}}Test8
-// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} <col:10> "" ""
+// CHECK-NEXT: attrDetails: DeprecatedAttr 0x{{[^ ]*}} <col:10> "" ""
[[deprecated]] void Test9(int Test10 [[deprecated]]);
// CHECK: FunctionDecl{{.*}}Test9
// CHECK-NEXT: ParmVarDecl{{.*}}Test10
-// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} <col:40> "" ""
-// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} <col:3> "" ""
+// CHECK-NEXT: typeDetails: BuiltinType
+// CHECK-NEXT: attrDetails: DeprecatedAttr 0x{{[^ ]*}} <col:40> "" ""
+// CHECK-NEXT: attrDetails: DeprecatedAttr 0x{{[^ ]*}} <col:3> "" ""
void Test11 [[deprecated]](void);
// CHECK: FunctionDecl{{.*}}Test11
-// CHECK-NEXT: DeprecatedAttr 0x{{[^ ]*}} <col:15> "" ""
+// CHECK-NEXT: attrDetails: DeprecatedAttr 0x{{[^ ]*}} <col:15> "" ""
diff --git a/clang/test/AST/ast-dump-comment.cpp b/clang/test/AST/ast-dump-comment.cpp
index 8b058911d614d..4521a828922c1 100644
--- a/clang/test/AST/ast-dump-comment.cpp
+++ b/clang/test/AST/ast-dump-comment.cpp
@@ -11,17 +11,17 @@
/// Aaa
int TestLocation;
// CHECK: VarDecl{{.*}}TestLocation
-// CHECK-NEXT: FullComment 0x{{[^ ]*}} <line:[[@LINE-3]]:4, col:7>
+// CHECK: FullComment 0x{{[^ ]*}} <line:[[@LINE-3]]:4, col:7>
///
int TestIndent;
// CHECK: {{^VarDecl.*TestIndent[^()]*$}}
-// CHECK-NEXT: {{^`-FullComment.*>$}}
+// CHECK: {{^`-FullComment.*>$}}
/// Aaa
int Test_TextComment;
// CHECK: VarDecl{{.*}}Test_TextComment
-// CHECK-NEXT: FullComment
+// CHECK: FullComment
// CHECK-NEXT: ParagraphComment
// CHECK-NEXT: TextComment{{.*}} Text=" Aaa"
@@ -77,7 +77,7 @@ int Test_InlineCommandCommentAnchor;
/// <br/>
int Test_HTMLTagComment;
// CHECK: VarDecl{{.*}}Test_HTMLTagComment
-// CHECK-NEXT: FullComment
+// CHECK: FullComment
// CHECK-NEXT: ParagraphComment
// CHECK-NEXT: TextComment{{.*}} Text=" "
// CHECK-NEXT: HTMLStartTagComment{{.*}} Name="a"
diff --git a/clang/test/AST/ast-dump-concepts.cpp b/clang/test/AST/ast-dump-concepts.cpp
index 84d981d2ab8de..16ea4cefaa562 100644
--- a/clang/test/AST/ast-dump-concepts.cpp
+++ b/clang/test/AST/ast-dump-concepts.cpp
@@ -21,14 +21,14 @@ struct Foo {
// CHECK-NEXT: `-ConceptSpecializationExpr {{.*}} <col:13, col:31> 'bool' Concept {{.*}} 'binary_concept'
// CHECK-NEXT: |-ImplicitConceptSpecializationDecl {{.*}} <line:13:9> col:9
// CHECK-NEXT: | |-TemplateArgument type 'type-parameter-1-0'
- // CHECK-NEXT: | | `-TemplateTypeParmType {{.*}} 'type-parameter-1-0' dependent {{.*}}depth 1 index 0
+ // CHECK-NEXT: | | `-typeDetails: TemplateTypeParmType {{.*}} 'type-parameter-1-0' dependent {{.*}}depth 1 index 0
// CHECK-NEXT: | `-TemplateArgument type 'int'
- // CHECK-NEXT: | `-BuiltinType {{.*}} 'int'
+ // CHECK-NEXT: | `-typeDetails: BuiltinType {{.*}} 'int'
// CHECK-NEXT: |-TemplateArgument {{.*}} type 'R'
- // CHECK-NEXT: | `-TemplateTypeParmType {{.*}} 'R'
+ // CHECK-NEXT: | `-typeDetails: TemplateTypeParmType {{.*}} 'R'
// CHECK-NEXT: | `-TemplateTypeParm {{.*}} 'R'
// CHECK-NEXT: `-TemplateArgument {{.*}} type 'int'
- // CHECK-NEXT: `-BuiltinType {{.*}} 'int'
+ // CHECK-NEXT: `-typeDetails: BuiltinType {{.*}} 'int'
template <binary_concept<int> R>
Foo(R);
@@ -36,7 +36,7 @@ struct Foo {
// CHECK-NEXT: `-ConceptSpecializationExpr {{.*}} <col:13> 'bool'
// CHECK-NEXT: |-ImplicitConceptSpecializationDecl {{.*}} <line:10:9> col:9
// CHECK-NEXT: | `-TemplateArgument type 'type-parameter-1-0'
- // CHECK-NEXT: | `-TemplateTypeParmType {{.*}} 'type-parameter-1-0' dependent {{.*}}depth 1 index 0
+ // CHECK-NEXT: | `-typeDetails: TemplateTypeParmType {{.*}} 'type-parameter-1-0' dependent {{.*}}depth 1 index 0
template <unary_concept R>
Foo(R);
@@ -79,27 +79,27 @@ concept Foo = C<T>;
// CHECK: TemplateTypeParmDecl {{.*}} Concept {{.*}} 'C' (UsingShadow {{.*}} 'C')
// CHECK: QualType
-// CHECK-NEXT: `-BuiltinType {{.*}} 'bool'
+// CHECK-NEXT: `-typeDetails: BuiltinType {{.*}} 'bool'
template <C T>
constexpr bool FooVar = false;
// CHECK: ConceptSpecializationExpr {{.*}} UsingShadow {{.*}} 'C'
// CHECK: QualType
-// CHECK-NEXT: `-BuiltinType {{.*}} 'bool'
+// CHECK-NEXT: `-typeDetails: BuiltinType {{.*}} 'bool'
template <typename T> requires C<T>
constexpr bool FooVar2 = true;
// CHECK: SimpleRequirement
// CHECK-NEXT: `-ConceptSpecializationExpr {{.*}} UsingShadow {{.*}} 'C'
// CHECK: QualType
-// CHECK-NEXT: `-BuiltinType {{.*}} 'bool'
+// CHECK-NEXT: `-typeDetails: BuiltinType {{.*}} 'bool'
template <typename T> requires requires (T) { C<T>; }
constexpr bool FooVar3 = true;
// CHECK: NonTypeTemplateParmDecl
// CHECK-NEXT: `-ConceptSpecializationExpr {{.*}} UsingShadow {{.*}} 'C'
// CHECK: QualType
-// CHECK-NEXT: `-BuiltinType {{.*}} 'bool'
+// CHECK-NEXT: `-typeDetails: BuiltinType {{.*}} 'bool'
template <C auto T>
constexpr bool FooVar4 = bool(T());
diff --git a/clang/test/AST/ast-dump-constant-var.cu b/clang/test/AST/ast-dump-constant-var.cu
index cec93af5ff7bf..31ce048dc69fe 100644
--- a/clang/test/AST/ast-dump-constant-var.cu
+++ b/clang/test/AST/ast-dump-constant-var.cu
@@ -4,11 +4,11 @@
#include "Inputs/cuda.h"
// CHECK-LABEL: VarDecl {{.*}} m1 'int'
-// CHECK-NEXT: CUDAConstantAttr {{.*}}cuda.h
+// CHECK: CUDAConstantAttr {{.*}}cuda.h
__constant__ int m1;
// CHECK-LABEL: VarDecl {{.*}} m2 'int'
-// CHECK-NEXT: CUDAConstantAttr {{.*}}cuda.h
+// CHECK: CUDAConstantAttr {{.*}}cuda.h
// CHECK-NOT: CUDAConstantAttr
__constant__ __constant__ int m2;
diff --git a/clang/test/AST/ast-dump-coroutine.cpp b/clang/test/AST/ast-dump-coroutine.cpp
index 39a6e7e5a3eee..63b609b47669a 100644
--- a/clang/test/AST/ast-dump-coroutine.cpp
+++ b/clang/test/AST/ast-dump-coroutine.cpp
@@ -1,67 +1,343 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown %s -std=c++20 \
-// RUN: -ast-dump -ast-dump-filter test | FileCheck %s
-
-#include "Inputs/std-coroutine.h"
-
-using namespace std;
-
-struct Task {
- struct promise_type {
- std::suspend_always initial_suspend() { return {}; }
- Task get_return_object() {
- return std::coroutine_handle<promise_type>::from_promise(*this);
- }
- std::suspend_always final_suspend() noexcept { return {}; }
- std::suspend_always return_void() { return {}; }
- void unhandled_exception() {}
-
- auto await_transform(int s) {
- struct awaiter {
- promise_type *promise;
- bool await_ready() { return true; }
- int await_resume() { return 1; }
- void await_suspend(std::coroutine_handle<>) {}
- };
-
- return awaiter{this};
- }
- };
-
- Task(std::coroutine_handle<promise_type> promise);
-
- std::coroutine_handle<promise_type> handle;
-};
-
-Task test() {
- co_await 1;
-// Writen souce code, verify no implicit bit for the co_await expr.
-// CHECK: CompoundStmt {{.*}}
-// CHECK-NEXT: | `-ExprWithCleanups {{.*}} 'int'
-// CHECK-NEXT: | `-CoawaitExpr {{.*}} 'int'{{$}}
-// CHECK-NEXT: | |-IntegerLiteral {{.*}} <col:12> 'int' 1
-// CHECK-NEXT: | |-MaterializeTemporaryExpr {{.*}} 'awaiter'
-// CHECK-NEXT: | | `-CXXMemberCallExpr {{.*}} 'awaiter'
-// CHECK-NEXT: | | |-MemberExpr {{.*}} .await_transform
-}
-// Verify the implicit AST nodes for coroutines.
-// CHECK: |-DeclStmt {{.*}}
-// CHECK-NEXT: | `-VarDecl {{.*}} implicit used __promise
-// CHECK-NEXT: | `-CXXConstructExpr {{.*}}
-// CHECK-NEXT: |-ExprWithCleanups {{.*}} 'void'
-// CHECK-NEXT: | `-CoawaitExpr {{.*}} 'void' implicit
-// CHECK-NEXT: |-CXXMemberCallExpr {{.*}} 'std::suspend_always'
-// CHECK-NEXT: | | `-MemberExpr {{.*}} .initial_suspend
-// ...
-// CHECK: CoreturnStmt {{.*}} <col:6> implicit
-
-Task test2() {
-// Writen souce code, verify no implicit bit for the co_return expr.
-// CHECK: CompoundStmt {{.*}}
-// CHECK-NEXT: | `-CoreturnStmt {{.*}} <line:{{.*}}:{{.*}}>{{$}}
- co_return;
-}
-// Verify the implicit AST nodes for coroutines.
-// CHECK: |-DeclStmt {{.*}}
-// CHECK-NEXT: | `-VarDecl {{.*}} implicit used __promise
-// ...
-// CHECK: CoreturnStmt {{.*}} <col:6> implicit
+// RUN: %clang_cc1 -triple x86_64-unknown-unknown %s -std=c++20 \
+// RUN: -ast-dump -ast-dump-filter test | FileCheck %s
+
+#include "Inputs/std-coroutine.h"
+
+using namespace std;
+
+struct Task {
+ struct promise_type {
+ std::suspend_always initial_suspend() { return {}; }
+ Task get_return_object() {
+ return std::coroutine_handle<promise_type>::from_promise(*this);
+ }
+ std::suspend_always final_suspend() noexcept { return {}; }
+ std::suspend_always return_void() { return {}; }
+ void unhandled_exception() {}
+
+ auto await_transform(int s) {
+ struct awaiter {
+ promise_type *promise;
+ bool await_ready() { return true; }
+ int await_resume() { return 1; }
+ void await_suspend(std::coroutine_handle<>) {}
+ };
+
+ return awaiter{this};
+ }
+ };
+
+ Task(std::coroutine_handle<promise_type> promise);
+
+ std::coroutine_handle<promise_type> handle;
+};
+
+Task test() {
+ co_await 1;
+}
+
+// CHECK: FunctionDecl {{.*}} test 'Task ()'
+// CHECK: `-CoroutineBodyStmt {{.*}}
+// CHECK: |-CompoundStmt {{.*}}
+// CHECK: | `-ExprWithCleanups {{.*}} 'int'
+// CHECK: | `-CoawaitExpr {{.*}} 'int'
+// CHECK: | |-IntegerLiteral {{.*}} 'int' 1
+// CHECK: | |-MaterializeTemporaryExpr {{.*}} 'awaiter' lvalue
+// CHECK: | | `-CXXMemberCallExpr {{.*}} 'awaiter'
+// CHECK: | | |-MemberExpr {{.*}} '<bound member function type>' .await_transform {{.*}}
+// CHECK: | | | `-DeclRefExpr {{.*}} 'std::coroutine_traits<Task>::promise_type':'Task::promise_type' lvalue Var {{.*}} '__promise' 'std::coroutine_traits<Task>::promise_type':'Task::promise_type'
+// CHECK: | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK: | |-ExprWithCleanups {{.*}} 'bool'
+// CHECK: | | `-CXXMemberCallExpr {{.*}} 'bool'
+// CHECK: | | `-MemberExpr {{.*}} '<bound member function type>' .await_ready {{.*}}
+// CHECK: | | `-OpaqueValueExpr {{.*}} 'awaiter' lvalue
+// CHECK: | | `-MaterializeTemporaryExpr {{.*}} 'awaiter' lvalue
+// CHECK: | | `-CXXMemberCallExpr {{.*}} 'awaiter'
+// CHECK: | | |-MemberExpr {{.*}} '<bound member function type>' .await_transform {{.*}}
+// CHECK: | | | `-DeclRefExpr {{.*}} 'std::coroutine_traits<Task>::promise_type':'Task::promise_type' lvalue Var {{.*}} '__promise' 'std::coroutine_traits<Task>::promise_type':'Task::promise_type'
+// CHECK: | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK: | |-ExprWithCleanups {{.*}} 'void'
+// CHECK: | | `-CXXMemberCallExpr {{.*}} 'void'
+// CHECK: | | |-MemberExpr {{.*}} '<bound member function type>' .await_suspend {{.*}}
+// CHECK: | | | `-OpaqueValueExpr {{.*}} 'awaiter' lvalue
+// CHECK: | | | `-MaterializeTemporaryExpr {{.*}} 'awaiter' lvalue
+// CHECK: | | | `-CXXMemberCallExpr {{.*}} 'awaiter'
+// CHECK: | | | |-MemberExpr {{.*}} '<bound member function type>' .await_transform {{.*}}
+// CHECK: | | | | `-DeclRefExpr {{.*}} 'std::coroutine_traits<Task>::promise_type':'Task::promise_type' lvalue Var {{.*}} '__promise' 'std::coroutine_traits<Task>::promise_type':'Task::promise_type'
+// CHECK: | | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK: | | `-CXXConstructExpr {{.*}} 'std::coroutine_handle<>':'std::coroutine_handle<void>' 'void (coroutine_handle<void> &&) noexcept'
+// CHECK: | | `-ImplicitCastExpr {{.*}} 'coroutine_handle<void>':'std::coroutine_handle<void>' xvalue <DerivedToBase (coroutine_handle)>
+// CHECK: | | `-MaterializeTemporaryExpr {{.*}} 'coroutine_handle<promise_type>':'std::coroutine_handle<Task::promise_type>' xvalue
+// CHECK: | | `-CallExpr {{.*}} 'coroutine_handle<promise_type>':'std::coroutine_handle<Task::promise_type>'
+// CHECK: | | |-ImplicitCastExpr {{.*}} 'coroutine_handle<promise_type> (*)(void *) noexcept' <FunctionToPointerDecay>
+// CHECK: | | | `-DeclRefExpr {{.*}} 'coroutine_handle<promise_type> (void *) noexcept' lvalue CXXMethod {{.*}} 'from_address' 'coroutine_handle<promise_type> (void *) noexcept'
+// CHECK: | | `-CallExpr {{.*}} 'void *'
+// CHECK: | | `-ImplicitCastExpr {{.*}} 'void *(*)() noexcept' <FunctionToPointerDecay>
+// CHECK: | | `-DeclRefExpr {{.*}} 'void *() noexcept' lvalue Function {{.*}} '__builtin_coro_frame' 'void *() noexcept'
+// CHECK: | `-CXXMemberCallExpr {{.*}} 'int'
+// CHECK: | `-MemberExpr {{.*}} '<bound member function type>' .await_resume {{.*}}
+// CHECK: | `-OpaqueValueExpr {{.*}} 'awaiter' lvalue
+// CHECK: | `-MaterializeTemporaryExpr {{.*}} 'awaiter' lvalue
+// CHECK: | `-CXXMemberCallExpr {{.*}} 'awaiter'
+// CHECK: | |-MemberExpr {{.*}} '<bound member function type>' .await_transform {{.*}}
+// CHECK: | | `-DeclRefExpr {{.*}} 'std::coroutine_traits<Task>::promise_type':'Task::promise_type' lvalue Var {{.*}} '__promise' 'std::coroutine_traits<Task>::promise_type':'Task::promise_type'
+// CHECK: | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK: |-DeclStmt {{.*}}
+// CHECK: | `-VarDecl {{.*}} implicit used __promise 'std::coroutine_traits<Task>::promise_type':'Task::promise_type' callinit
+// CHECK: | |-CXXConstructExpr {{.*}} 'std::coroutine_traits<Task>::promise_type':'Task::promise_type' 'void () noexcept'
+// CHECK: | `-typeDetails: TypedefType {{.*}} 'std::coroutine_traits<Task>::promise_type' sugar
+// CHECK: | |-TypeAlias {{.*}} 'promise_type'
+// CHECK: | `-typeDetails: ElaboratedType {{.*}} 'typename Task::promise_type' sugar
+// CHECK: | `-typeDetails: RecordType {{.*}} 'Task::promise_type'
+// CHECK: | `-CXXRecord {{.*}} 'promise_type'
+// CHECK: |-ExprWithCleanups {{.*}} 'void'
+// CHECK: | `-CoawaitExpr {{.*}} 'void' implicit
+// CHECK: | |-CXXMemberCallExpr {{.*}} 'std::suspend_always'
+// CHECK: | | `-MemberExpr {{.*}} '<bound member function type>' .initial_suspend {{.*}}
+// CHECK: | | `-DeclRefExpr {{.*}} 'std::coroutine_traits<Task>::promise_type':'Task::promise_type' lvalue Var {{.*}} '__promise' 'std::coroutine_traits<Task>::promise_type':'Task::promise_type'
+// CHECK: | |-MaterializeTemporaryExpr {{.*}} 'std::suspend_always' lvalue
+// CHECK: | | `-CXXMemberCallExpr {{.*}} 'std::suspend_always'
+// CHECK: | | `-MemberExpr {{.*}} '<bound member function type>' .initial_suspend {{.*}}
+// CHECK: | | `-DeclRefExpr {{.*}} 'std::coroutine_traits<Task>::promise_type':'Task::promise_type' lvalue Var {{.*}} '__promise' 'std::coroutine_traits<Task>::promise_type':'Task::promise_type'
+// CHECK: | |-ExprWithCleanups {{.*}} 'bool'
+// CHECK: | | `-CXXMemberCallExpr {{.*}} 'bool'
+// CHECK: | | `-MemberExpr {{.*}} '<bound member function type>' .await_ready {{.*}}
+// CHECK: | | `-OpaqueValueExpr {{.*}} 'std::suspend_always' lvalue
+// CHECK: | | `-MaterializeTemporaryExpr {{.*}} 'std::suspend_always' lvalue
+// CHECK: | | `-CXXMemberCallExpr {{.*}} 'std::suspend_always'
+// CHECK: | | `-MemberExpr {{.*}} '<bound member function type>' .initial_suspend {{.*}}
+// CHECK: | | `-DeclRefExpr {{.*}} 'std::coroutine_traits<Task>::promise_type':'Task::promise_type' lvalue Var {{.*}} '__promise' 'std::coroutine_traits<Task>::promise_type':'Task::promise_type'
+// CHECK: | |-ExprWithCleanups {{.*}} 'void'
+// CHECK: | | `-CXXMemberCallExpr {{.*}} 'void'
+// CHECK: | | |-MemberExpr {{.*}} '<bound member function type>' .await_suspend {{.*}}
+// CHECK: | | | `-OpaqueValueExpr {{.*}} 'std::suspend_always' lvalue
+// CHECK: | | | `-MaterializeTemporaryExpr {{.*}} 'std::suspend_always' lvalue
+// CHECK: | | | `-CXXMemberCallExpr {{.*}} 'std::suspend_always'
+// CHECK: | | | `-MemberExpr {{.*}} '<bound member function type>' .initial_suspend {{.*}}
+// CHECK: | | | `-DeclRefExpr {{.*}} 'std::coroutine_traits<Task>::promise_type':'Task::promise_type' lvalue Var {{.*}} '__promise' 'std::coroutine_traits<Task>::promise_type':'Task::promise_type'
+// CHECK: | | `-CXXConstructExpr {{.*}} 'coroutine_handle<>':'std::coroutine_handle<void>' 'void (coroutine_handle<void> &&) noexcept'
+// CHECK: | | `-ImplicitCastExpr {{.*}} 'coroutine_handle<void>':'std::coroutine_handle<void>' xvalue <DerivedToBase (coroutine_handle)>
+// CHECK: | | `-MaterializeTemporaryExpr {{.*}} 'coroutine_handle<promise_type>':'std::coroutine_handle<Task::promise_type>' xvalue
+// CHECK: | | `-CallExpr {{.*}} 'coroutine_handle<promise_type>':'std::coroutine_handle<Task::promise_type>'
+// CHECK: | | |-ImplicitCastExpr {{.*}} 'coroutine_handle<promise_type> (*)(void *) noexcept' <FunctionToPointerDecay>
+// CHECK: | | | `-DeclRefExpr {{.*}} 'coroutine_handle<promise_type> (void *) noexcept' lvalue CXXMethod {{.*}} 'from_address' 'coroutine_handle<promise_type> (void *) noexcept'
+// CHECK: | | `-CallExpr {{.*}} 'void *'
+// CHECK: | | `-ImplicitCastExpr {{.*}} 'void *(*)() noexcept' <FunctionToPointerDecay>
+// CHECK: | | `-DeclRefExpr {{.*}} 'void *() noexcept' lvalue Function {{.*}} '__builtin_coro_frame' 'void *() noexcept'
+// CHECK: | `-CXXMemberCallExpr {{.*}} 'void'
+// CHECK: | `-MemberExpr {{.*}} '<bound member function type>' .await_resume {{.*}}
+// CHECK: | `-OpaqueValueExpr {{.*}} 'std::suspend_always' lvalue
+// CHECK: | `-MaterializeTemporaryExpr {{.*}} 'std::suspend_always' lvalue
+// CHECK: | `-CXXMemberCallExpr {{.*}} 'std::suspend_always'
+// CHECK: | `-MemberExpr {{.*}} '<bound member function type>' .initial_suspend {{.*}}
+// CHECK: | `-DeclRefExpr {{.*}} 'std::coroutine_traits<Task>::promise_type':'Task::promise_type' lvalue Var {{.*}} '__promise' 'std::coroutine_traits<Task>::promise_type':'Task::promise_type'
+// CHECK: |-ExprWithCleanups {{.*}} 'void'
+// CHECK: | `-CoawaitExpr {{.*}} 'void' implicit
+// CHECK: | |-CXXMemberCallExpr {{.*}} 'std::suspend_always'
+// CHECK: | | `-MemberExpr {{.*}} '<bound member function type>' .final_suspend {{.*}}
+// CHECK: | | `-DeclRefExpr {{.*}} 'std::coroutine_traits<Task>::promise_type':'Task::promise_type' lvalue Var {{.*}} '__promise' 'std::coroutine_traits<Task>::promise_type':'Task::promise_type'
+// CHECK: | |-MaterializeTemporaryExpr {{.*}} 'std::suspend_always' lvalue
+// CHECK: | | `-CXXMemberCallExpr {{.*}} 'std::suspend_always'
+// CHECK: | | `-MemberExpr {{.*}} '<bound member function type>' .final_suspend {{.*}}
+// CHECK: | | `-DeclRefExpr {{.*}} 'std::coroutine_traits<Task>::promise_type':'Task::promise_type' lvalue Var {{.*}} '__promise' 'std::coroutine_traits<Task>::promise_type':'Task::promise_type'
+// CHECK: | |-ExprWithCleanups {{.*}} 'bool'
+// CHECK: | | `-CXXMemberCallExpr {{.*}} 'bool'
+// CHECK: | | `-MemberExpr {{.*}} '<bound member function type>' .await_ready {{.*}}
+// CHECK: | | `-OpaqueValueExpr {{.*}} 'std::suspend_always' lvalue
+// CHECK: | | `-MaterializeTemporaryExpr {{.*}} 'std::suspend_always' lvalue
+// CHECK: | | `-CXXMemberCallExpr {{.*}} 'std::suspend_always'
+// CHECK: | | `-MemberExpr {{.*}} '<bound member function type>' .final_suspend {{.*}}
+// CHECK: | | `-DeclRefExpr {{.*}} 'std::coroutine_traits<Task>::promise_type':'Task::promise_type' lvalue Var {{.*}} '__promise' 'std::coroutine_traits<Task>::promise_type':'Task::promise_type'
+// CHECK: | |-ExprWithCleanups {{.*}} 'void'
+// CHECK: | | `-CXXMemberCallExpr {{.*}} 'void'
+// CHECK: | | |-MemberExpr {{.*}} '<bound member function type>' .await_suspend {{.*}}
+// CHECK: | | | `-OpaqueValueExpr {{.*}} 'std::suspend_always' lvalue
+// CHECK: | | | `-MaterializeTemporaryExpr {{.*}} 'std::suspend_always' lvalue
+// CHECK: | | | `-CXXMemberCallExpr {{.*}} 'std::suspend_always'
+// CHECK: | | | `-MemberExpr {{.*}} '<bound member function type>' .final_suspend {{.*}}
+// CHECK: | | | `-DeclRefExpr {{.*}} 'std::coroutine_traits<Task>::promise_type':'Task::promise_type' lvalue Var {{.*}} '__promise' 'std::coroutine_traits<Task>::promise_type':'Task::promise_type'
+// CHECK: | | `-CXXConstructExpr {{.*}} 'coroutine_handle<>':'std::coroutine_handle<void>' 'void (coroutine_handle<void> &&) noexcept'
+// CHECK: | | `-ImplicitCastExpr {{.*}} 'coroutine_handle<void>':'std::coroutine_handle<void>' xvalue <DerivedToBase (coroutine_handle)>
+// CHECK: | | `-MaterializeTemporaryExpr {{.*}} 'coroutine_handle<promise_type>':'std::coroutine_handle<Task::promise_type>' xvalue
+// CHECK: | | `-CallExpr {{.*}} 'coroutine_handle<promise_type>':'std::coroutine_handle<Task::promise_type>'
+// CHECK: | | |-ImplicitCastExpr {{.*}} 'coroutine_handle<promise_type> (*)(void *) noexcept' <FunctionToPointerDecay>
+// CHECK: | | | `-DeclRefExpr {{.*}} 'coroutine_handle<promise_type> (void *) noexcept' lvalue CXXMethod {{.*}} 'from_address' 'coroutine_handle<promise_type> (void *) noexcept'
+// CHECK: | | `-CallExpr {{.*}} 'void *'
+// CHECK: | | `-ImplicitCastExpr {{.*}} 'void *(*)() noexcept' <FunctionToPointerDecay>
+// CHECK: | | `-DeclRefExpr {{.*}} 'void *() noexcept' lvalue Function {{.*}} '__builtin_coro_frame' 'void *() noexcept'
+// CHECK: | `-CXXMemberCallExpr {{.*}} 'void'
+// CHECK: | `-MemberExpr {{.*}} '<bound member function type>' .await_resume {{.*}}
+// CHECK: | `-OpaqueValueExpr {{.*}} 'std::suspend_always' lvalue
+// CHECK: | `-MaterializeTemporaryExpr {{.*}} 'std::suspend_always' lvalue
+// CHECK: | `-CXXMemberCallExpr {{.*}} 'std::suspend_always'
+// CHECK: | `-MemberExpr {{.*}} '<bound member function type>' .final_suspend {{.*}}
+// CHECK: | `-DeclRefExpr {{.*}} 'std::coroutine_traits<Task>::promise_type':'Task::promise_type' lvalue Var {{.*}} '__promise' 'std::coroutine_traits<Task>::promise_type':'Task::promise_type'
+// CHECK: |-<<<NULL>>>
+// CHECK: |-CoreturnStmt {{.*}} implicit
+// CHECK: | |-<<<NULL>>>
+// CHECK: | `-CXXMemberCallExpr {{.*}} 'std::suspend_always'
+// CHECK: | `-MemberExpr {{.*}} '<bound member function type>' .return_void {{.*}}
+// CHECK: | `-DeclRefExpr {{.*}} 'std::coroutine_traits<Task>::promise_type':'Task::promise_type' lvalue Var {{.*}} '__promise' 'std::coroutine_traits<Task>::promise_type':'Task::promise_type'
+// CHECK: |-CallExpr {{.*}} 'void *'
+// CHECK: | |-ImplicitCastExpr {{.*}} 'void *(*)(unsigned long)' <FunctionToPointerDecay>
+// CHECK: | | `-DeclRefExpr {{.*}} 'void *(unsigned long)' lvalue Function {{.*}} 'operator new' 'void *(unsigned long)'
+// CHECK: | `-CallExpr {{.*}} 'unsigned long'
+// CHECK: | `-ImplicitCastExpr {{.*}} 'unsigned long (*)() noexcept' <FunctionToPointerDecay>
+// CHECK: | `-DeclRefExpr {{.*}} 'unsigned long () noexcept' lvalue Function {{.*}} '__builtin_coro_size' 'unsigned long () noexcept'
+// CHECK: |-CallExpr {{.*}} 'void'
+// CHECK: | |-ImplicitCastExpr {{.*}} 'void (*)(void *, unsigned long) noexcept' <FunctionToPointerDecay>
+// CHECK: | | `-DeclRefExpr {{.*}} 'void (void *, unsigned long) noexcept' lvalue Function {{.*}} 'operator delete' 'void (void *, unsigned long) noexcept'
+// CHECK: | |-CallExpr {{.*}} 'void *'
+// CHECK: | | |-ImplicitCastExpr {{.*}} 'void *(*)(void *) noexcept' <FunctionToPointerDecay>
+// CHECK: | | | `-DeclRefExpr {{.*}} 'void *(void *) noexcept' lvalue Function {{.*}} '__builtin_coro_free' 'void *(void *) noexcept'
+// CHECK: | | `-CallExpr {{.*}} 'void *'
+// CHECK: | | `-ImplicitCastExpr {{.*}} 'void *(*)() noexcept' <FunctionToPointerDecay>
+// CHECK: | | `-DeclRefExpr {{.*}} 'void *() noexcept' lvalue Function {{.*}} '__builtin_coro_frame' 'void *() noexcept'
+// CHECK: | `-CallExpr {{.*}} 'unsigned long'
+// CHECK: | `-ImplicitCastExpr {{.*}} 'unsigned long (*)() noexcept' <FunctionToPointerDecay>
+// CHECK: | `-DeclRefExpr {{.*}} 'unsigned long () noexcept' lvalue Function {{.*}} '__builtin_coro_size' 'unsigned long () noexcept'
+// CHECK: |-<<<NULL>>>
+// CHECK: |-CXXMemberCallExpr {{.*}} 'Task'
+// CHECK: | `-MemberExpr {{.*}} '<bound member function type>' .get_return_object {{.*}}
+// CHECK: | `-DeclRefExpr {{.*}} 'std::coroutine_traits<Task>::promise_type':'Task::promise_type' lvalue Var {{.*}} '__promise' 'std::coroutine_traits<Task>::promise_type':'Task::promise_type'
+// CHECK: |-ReturnStmt {{.*}}
+// CHECK: | `-CXXMemberCallExpr {{.*}} 'Task'
+// CHECK: | `-MemberExpr {{.*}} '<bound member function type>' .get_return_object {{.*}}
+// CHECK: | `-DeclRefExpr {{.*}} 'std::coroutine_traits<Task>::promise_type':'Task::promise_type' lvalue Var {{.*}} '__promise' 'std::coroutine_traits<Task>::promise_type':'Task::promise_type'
+// CHECK: `-<<<NULL>>>
+
+Task test2() {
+ co_return;
+}
+
+//CHECK: FunctionDecl {{.*}} test2 'Task ()'
+//CHECK: `-CoroutineBodyStmt {{.*}}
+//CHECK: |-CompoundStmt {{.*}}
+//CHECK: | `-CoreturnStmt {{.*}}
+//CHECK: | |-<<<NULL>>>
+//CHECK: | `-CXXMemberCallExpr {{.*}} 'std::suspend_always'
+//CHECK: | `-MemberExpr {{.*}} '<bound member function type>' .return_void {{.*}}
+//CHECK: | `-DeclRefExpr {{.*}} 'std::coroutine_traits<Task>::promise_type':'Task::promise_type' lvalue Var {{.*}} '__promise' 'std::coroutine_traits<Task>::promise_type':'Task::promise_type'
+//CHECK: |-DeclStmt {{.*}}
+//CHECK: | `-VarDecl {{.*}} implicit used __promise 'std::coroutine_traits<Task>::promise_type':'Task::promise_type' callinit
+//CHECK: | |-CXXConstructExpr {{.*}} 'std::coroutine_traits<Task>::promise_type':'Task::promise_type' 'void () noexcept'
+//CHECK: | `-typeDetails: TypedefType {{.*}} 'std::coroutine_traits<Task>::promise_type' sugar
+//CHECK: | |-TypeAlias {{.*}} 'promise_type'
+//CHECK: | `-typeDetails: ElaboratedType {{.*}} 'typename Task::promise_type' sugar
+//CHECK: | `-typeDetails: RecordType {{.*}} 'Task::promise_type'
+//CHECK: | `-CXXRecord {{.*}} 'promise_type'
+//CHECK: |-ExprWithCleanups {{.*}} 'void'
+//CHECK: | `-CoawaitExpr {{.*}} 'void' implicit
+//CHECK: | |-CXXMemberCallExpr {{.*}} 'std::suspend_always'
+//CHECK: | | `-MemberExpr {{.*}} '<bound member function type>' .initial_suspend {{.*}}
+//CHECK: | | `-DeclRefExpr {{.*}} 'std::coroutine_traits<Task>::promise_type':'Task::promise_type' lvalue Var {{.*}} '__promise' 'std::coroutine_traits<Task>::promise_type':'Task::promise_type'
+//CHECK: | |-MaterializeTemporaryExpr {{.*}} 'std::suspend_always' lvalue
+//CHECK: | | `-CXXMemberCallExpr {{.*}} 'std::suspend_always'
+//CHECK: | | `-MemberExpr {{.*}} '<bound member function type>' .initial_suspend {{.*}}
+//CHECK: | | `-DeclRefExpr {{.*}} 'std::coroutine_traits<Task>::promise_type':'Task::promise_type' lvalue Var {{.*}} '__promise' 'std::coroutine_traits<Task>::promise_type':'Task::promise_type'
+//CHECK: | |-ExprWithCleanups {{.*}} 'bool'
+//CHECK: | | `-CXXMemberCallExpr {{.*}} 'bool'
+//CHECK: | | `-MemberExpr {{.*}} '<bound member function type>' .await_ready {{.*}}
+//CHECK: | | `-OpaqueValueExpr {{.*}} 'std::suspend_always' lvalue
+//CHECK: | | `-MaterializeTemporaryExpr {{.*}} 'std::suspend_always' lvalue
+//CHECK: | | `-CXXMemberCallExpr {{.*}} 'std::suspend_always'
+//CHECK: | | `-MemberExpr {{.*}} '<bound member function type>' .initial_suspend {{.*}}
+//CHECK: | | `-DeclRefExpr {{.*}} 'std::coroutine_traits<Task>::promise_type':'Task::promise_type' lvalue Var {{.*}} '__promise' 'std::coroutine_traits<Task>::promise_type':'Task::promise_type'
+//CHECK: | |-ExprWithCleanups {{.*}} 'void'
+//CHECK: | | `-CXXMemberCallExpr {{.*}} 'void'
+//CHECK: | | |-MemberExpr {{.*}} '<bound member function type>' .await_suspend {{.*}}
+//CHECK: | | | `-OpaqueValueExpr {{.*}} 'std::suspend_always' lvalue
+//CHECK: | | | `-MaterializeTemporaryExpr {{.*}} 'std::suspend_always' lvalue
+//CHECK: | | | `-CXXMemberCallExpr {{.*}} 'std::suspend_always'
+//CHECK: | | | `-MemberExpr {{.*}} '<bound member function type>' .initial_suspend {{.*}}
+//CHECK: | | | `-DeclRefExpr {{.*}} 'std::coroutine_traits<Task>::promise_type':'Task::promise_type' lvalue Var {{.*}} '__promise' 'std::coroutine_traits<Task>::promise_type':'Task::promise_type'
+//CHECK: | | `-CXXConstructExpr {{.*}} 'coroutine_handle<>':'std::coroutine_handle<void>' 'void (coroutine_handle<void> &&) noexcept'
+//CHECK: | | `-ImplicitCastExpr {{.*}} 'coroutine_handle<void>':'std::coroutine_handle<void>' xvalue <DerivedToBase (coroutine_handle)>
+//CHECK: | | `-MaterializeTemporaryExpr {{.*}} 'coroutine_handle<promise_type>':'std::coroutine_handle<Task::promise_type>' xvalue
+//CHECK: | | `-CallExpr {{.*}} 'coroutine_handle<promise_type>':'std::coroutine_handle<Task::promise_type>'
+//CHECK: | | |-ImplicitCastExpr {{.*}} 'coroutine_handle<promise_type> (*)(void *) noexcept' <FunctionToPointerDecay>
+//CHECK: | | | `-DeclRefExpr {{.*}} 'coroutine_handle<promise_type> (void *) noexcept' lvalue CXXMethod {{.*}} 'from_address' 'coroutine_handle<promise_type> (void *) noexcept'
+//CHECK: | | `-CallExpr {{.*}} 'void *'
+//CHECK: | | `-ImplicitCastExpr {{.*}} 'void *(*)() noexcept' <FunctionToPointerDecay>
+//CHECK: | | `-DeclRefExpr {{.*}} 'void *() noexcept' lvalue Function {{.*}} '__builtin_coro_frame' 'void *() noexcept'
+//CHECK: | `-CXXMemberCallExpr {{.*}} 'void'
+//CHECK: | `-MemberExpr {{.*}} '<bound member function type>' .await_resume {{.*}}
+//CHECK: | `-OpaqueValueExpr {{.*}} 'std::suspend_always' lvalue
+//CHECK: | `-MaterializeTemporaryExpr {{.*}} 'std::suspend_always' lvalue
+//CHECK: | `-CXXMemberCallExpr {{.*}} 'std::suspend_always'
+//CHECK: | `-MemberExpr {{.*}} '<bound member function type>' .initial_suspend {{.*}}
+//CHECK: | `-DeclRefExpr {{.*}} 'std::coroutine_traits<Task>::promise_type':'Task::promise_type' lvalue Var {{.*}} '__promise' 'std::coroutine_traits<Task>::promise_type':'Task::promise_type'
+//CHECK: |-ExprWithCleanups {{.*}} 'void'
+//CHECK: | `-CoawaitExpr {{.*}} 'void' implicit
+//CHECK: | |-CXXMemberCallExpr {{.*}} 'std::suspend_always'
+//CHECK: | | `-MemberExpr {{.*}} '<bound member function type>' .final_suspend {{.*}}
+//CHECK: | | `-DeclRefExpr {{.*}} 'std::coroutine_traits<Task>::promise_type':'Task::promise_type' lvalue Var {{.*}} '__promise' 'std::coroutine_traits<Task>::promise_type':'Task::promise_type'
+//CHECK: | |-MaterializeTemporaryExpr {{.*}} 'std::suspend_always' lvalue
+//CHECK: | | `-CXXMemberCallExpr {{.*}} 'std::suspend_always'
+//CHECK: | | `-MemberExpr {{.*}} '<bound member function type>' .final_suspend {{.*}}
+//CHECK: | | `-DeclRefExpr {{.*}} 'std::coroutine_traits<Task>::promise_type':'Task::promise_type' lvalue Var {{.*}} '__promise' 'std::coroutine_traits<Task>::promise_type':'Task::promise_type'
+//CHECK: | |-ExprWithCleanups {{.*}} 'bool'
+//CHECK: | | `-CXXMemberCallExpr {{.*}} 'bool'
+//CHECK: | | `-MemberExpr {{.*}} '<bound member function type>' .await_ready {{.*}}
+//CHECK: | | `-OpaqueValueExpr {{.*}} 'std::suspend_always' lvalue
+//CHECK: | | `-MaterializeTemporaryExpr {{.*}} 'std::suspend_always' lvalue
+//CHECK: | | `-CXXMemberCallExpr {{.*}} 'std::suspend_always'
+//CHECK: | | `-MemberExpr {{.*}} '<bound member function type>' .final_suspend {{.*}}
+//CHECK: | | `-DeclRefExpr {{.*}} 'std::coroutine_traits<Task>::promise_type':'Task::promise_type' lvalue Var {{.*}} '__promise' 'std::coroutine_traits<Task>::promise_type':'Task::promise_type'
+//CHECK: | |-ExprWithCleanups {{.*}} 'void'
+//CHECK: | | `-CXXMemberCallExpr {{.*}} 'void'
+//CHECK: | | |-MemberExpr {{.*}} '<bound member function type>' .await_suspend {{.*}}
+//CHECK: | | | `-OpaqueValueExpr {{.*}} 'std::suspend_always' lvalue
+//CHECK: | | | `-MaterializeTemporaryExpr {{.*}} 'std::suspend_always' lvalue
+//CHECK: | | | `-CXXMemberCallExpr {{.*}} 'std::suspend_always'
+//CHECK: | | | `-MemberExpr {{.*}} '<bound member function type>' .final_suspend {{.*}}
+//CHECK: | | | `-DeclRefExpr {{.*}} 'std::coroutine_traits<Task>::promise_type':'Task::promise_type' lvalue Var {{.*}} '__promise' 'std::coroutine_traits<Task>::promise_type':'Task::promise_type'
+//CHECK: | | `-CXXConstructExpr {{.*}} 'coroutine_handle<>':'std::coroutine_handle<void>' 'void (coroutine_handle<void> &&) noexcept'
+//CHECK: | | `-ImplicitCastExpr {{.*}} 'coroutine_handle<void>':'std::coroutine_handle<void>' xvalue <DerivedToBase (coroutine_handle)>
+//CHECK: | | `-MaterializeTemporaryExpr {{.*}} 'coroutine_handle<promise_type>':'std::coroutine_handle<Task::promise_type>' xvalue
+//CHECK: | | `-CallExpr {{.*}} 'coroutine_handle<promise_type>':'std::coroutine_handle<Task::promise_type>'
+//CHECK: | | |-ImplicitCastExpr {{.*}} 'coroutine_handle<promise_type> (*)(void *) noexcept' <FunctionToPointerDecay>
+//CHECK: | | | `-DeclRefExpr {{.*}} 'coroutine_handle<promise_type> (void *) noexcept' lvalue CXXMethod {{.*}} 'from_address' 'coroutine_handle<promise_type> (void *) noexcept'
+//CHECK: | | `-CallExpr {{.*}} 'void *'
+//CHECK: | | `-ImplicitCastExpr {{.*}} 'void *(*)() noexcept' <FunctionToPointerDecay>
+//CHECK: | | `-DeclRefExpr {{.*}} 'void *() noexcept' lvalue Function {{.*}} '__builtin_coro_frame' 'void *() noexcept'
+//CHECK: | `-CXXMemberCallExpr {{.*}} 'void'
+//CHECK: | `-MemberExpr {{.*}} '<bound member function type>' .await_resume {{.*}}
+//CHECK: | `-OpaqueValueExpr {{.*}} 'std::suspend_always' lvalue
+//CHECK: | `-MaterializeTemporaryExpr {{.*}} 'std::suspend_always' lvalue
+//CHECK: | `-CXXMemberCallExpr {{.*}} 'std::suspend_always'
+//CHECK: | `-MemberExpr {{.*}} '<bound member function type>' .final_suspend {{.*}}
+//CHECK: | `-DeclRefExpr {{.*}} 'std::coroutine_traits<Task>::promise_type':'Task::promise_type' lvalue Var {{.*}} '__promise' 'std::coroutine_traits<Task>::promise_type':'Task::promise_type'
+//CHECK: |-<<<NULL>>>
+//CHECK: |-CoreturnStmt {{.*}} implicit
+//CHECK: | |-<<<NULL>>>
+//CHECK: | `-CXXMemberCallExpr {{.*}} 'std::suspend_always'
+//CHECK: | `-MemberExpr {{.*}} '<bound member function type>' .return_void {{.*}}
+//CHECK: | `-DeclRefExpr {{.*}} 'std::coroutine_traits<Task>::promise_type':'Task::promise_type' lvalue Var {{.*}} '__promise' 'std::coroutine_traits<Task>::promise_type':'Task::promise_type'
+//CHECK: |-CallExpr {{.*}} 'void *'
+//CHECK: | |-ImplicitCastExpr {{.*}} 'void *(*)(unsigned long)' <FunctionToPointerDecay>
+//CHECK: | | `-DeclRefExpr {{.*}} 'void *(unsigned long)' lvalue Function {{.*}} 'operator new' 'void *(unsigned long)'
+//CHECK: | `-CallExpr {{.*}} 'unsigned long'
+//CHECK: | `-ImplicitCastExpr {{.*}} 'unsigned long (*)() noexcept' <FunctionToPointerDecay>
+//CHECK: | `-DeclRefExpr {{.*}} 'unsigned long () noexcept' lvalue Function {{.*}} '__builtin_coro_size' 'unsigned long () noexcept'
+//CHECK: |-CallExpr {{.*}} 'void'
+//CHECK: | |-ImplicitCastExpr {{.*}} 'void (*)(void *, unsigned long) noexcept' <FunctionToPointerDecay>
+//CHECK: | | `-DeclRefExpr {{.*}} 'void (void *, unsigned long) noexcept' lvalue Function {{.*}} 'operator delete' 'void (void *, unsigned long) noexcept'
+//CHECK: | |-CallExpr {{.*}} 'void *'
+//CHECK: | | |-ImplicitCastExpr {{.*}} 'void *(*)(void *) noexcept' <FunctionToPointerDecay>
+//CHECK: | | | `-DeclRefExpr {{.*}} 'void *(void *) noexcept' lvalue Function {{.*}} '__builtin_coro_free' 'void *(void *) noexcept'
+//CHECK: | | `-CallExpr {{.*}} 'void *'
+//CHECK: | | `-ImplicitCastExpr {{.*}} 'void *(*)() noexcept' <FunctionToPointerDecay>
+//CHECK: | | `-DeclRefExpr {{.*}} 'void *() noexcept' lvalue Function {{.*}} '__builtin_coro_frame' 'void *() noexcept'
+//CHECK: | `-CallExpr {{.*}} 'unsigned long'
+//CHECK: | `-ImplicitCastExpr {{.*}} 'unsigned long (*)() noexcept' <FunctionToPointerDecay>
+//CHECK: | `-DeclRefExpr {{.*}} 'unsigned long () noexcept' lvalue Function {{.*}} '__builtin_coro_size' 'unsigned long () noexcept'
+//CHECK: |-<<<NULL>>>
+//CHECK: |-CXXMemberCallExpr {{.*}} 'Task'
+//CHECK: | `-MemberExpr {{.*}} '<bound member function type>' .get_return_object {{.*}}
+//CHECK: | `-DeclRefExpr {{.*}} 'std::coroutine_traits<Task>::promise_type':'Task::promise_type' lvalue Var {{.*}} '__promise' 'std::coroutine_traits<Task>::promise_type':'Task::promise_type'
+//CHECK: |-ReturnStmt {{.*}}
+//CHECK: | `-CXXMemberCallExpr {{.*}} 'Task'
+//CHECK: | `-MemberExpr {{.*}} '<bound member function type>' .get_return_object {{.*}}
+//CHECK: | `-DeclRefExpr {{.*}} 'std::coroutine_traits<Task>::promise_type':'Task::promise_type' lvalue Var {{.*}} '__promise' 'std::coroutine_traits<Task>::promise_type':'Task::promise_type'
+//CHECK: `-<<<NULL>>>
\ No newline at end of file
diff --git a/clang/test/AST/ast-dump-ctad-alias.cpp b/clang/test/AST/ast-dump-ctad-alias.cpp
index b1631f7822ce0..33e0effa5874a 100644
--- a/clang/test/AST/ast-dump-ctad-alias.cpp
+++ b/clang/test/AST/ast-dump-ctad-alias.cpp
@@ -31,28 +31,28 @@ Out2<double>::AInner t(1.0);
// CHECK-NEXT: | |-BinaryOperator {{.*}} '<dependent type>' '&&'
// CHECK-NEXT: | | |-UnresolvedLookupExpr {{.*}} '<dependent type>' lvalue (no ADL) = 'Concept'
// CHECK-NEXT: | | | |-TemplateArgument type 'int'
-// CHECK-NEXT: | | | | `-BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
// CHECK-NEXT: | | | `-TemplateArgument type 'Y':'type-parameter-1-0'
-// CHECK-NEXT: | | | `-TemplateTypeParmType {{.*}} 'Y' dependent depth 1 index 0
+// CHECK-NEXT: | | | `-typeDetails: TemplateTypeParmType {{.*}} 'Y' dependent depth 1 index 0
// CHECK-NEXT: | | | `-TemplateTypeParm {{.*}} 'Y'
// CHECK-NEXT: | | `-TypeTraitExpr {{.*}} 'bool' __is_deducible
-// CHECK-NEXT: | | |-DeducedTemplateSpecializationType {{.*}} 'Out2<double>::AInner' dependent
+// CHECK-NEXT: | | |-typeDetails: DeducedTemplateSpecializationType {{.*}} 'Out2<double>::AInner' dependent
// CHECK-NEXT: | | | `-name: 'Out2<double>::AInner'
// CHECK-NEXT: | | | `-TypeAliasTemplateDecl {{.+}} AInner{{$}}
-// CHECK-NEXT: | | `-ElaboratedType {{.*}} 'Inner<Y>' sugar dependent
-// CHECK-NEXT: | | `-TemplateSpecializationType {{.*}} 'Inner<Y>' dependent
+// CHECK-NEXT: | | `-typeDetails: ElaboratedType {{.*}} 'Inner<Y>' sugar dependent
+// CHECK-NEXT: | | `-typeDetails: TemplateSpecializationType {{.*}} 'Inner<Y>' dependent
// CHECK-NEXT: | | |-name: 'Inner':'Out<int>::Inner' qualified
// CHECK-NEXT: | | | `-ClassTemplateDecl {{.+}} Inner{{$}}
// CHECK-NEXT: | | `-TemplateArgument type 'Y'
-// CHECK-NEXT: | | `-SubstTemplateTypeParmType {{.*}} 'Y'
+// CHECK-NEXT: | | `-typeDetails: SubstTemplateTypeParmType {{.*}} 'Y'
// CHECK-NEXT: | | |-FunctionTemplate {{.*}} '<deduction guide for Inner>'
-// CHECK-NEXT: | | `-TemplateTypeParmType {{.*}} 'Y' dependent depth 1 index 0
+// CHECK-NEXT: | | `-typeDetails: TemplateTypeParmType {{.*}} 'Y' dependent depth 1 index 0
// CHECK-NEXT: | | `-TemplateTypeParm {{.*}} 'Y'
// CHECK-NEXT: | |-CXXDeductionGuideDecl {{.*}} <deduction guide for AInner> 'auto (Y) -> Inner<Y>'
// CHECK-NEXT: | | `-ParmVarDecl {{.*}} 'Y'
-// CHECK-NEXT: | `-CXXDeductionGuideDecl {{.*}} used <deduction guide for AInner> 'auto (double) -> Inner<double>' implicit_instantiation
+// CHECK: | `-CXXDeductionGuideDecl {{.*}} used <deduction guide for AInner> 'auto (double) -> Inner<double>' implicit_instantiation
// CHECK-NEXT: | |-TemplateArgument type 'double'
-// CHECK-NEXT: | | `-BuiltinType {{.*}} 'double'
+// CHECK-NEXT: | | `-typeDetails: BuiltinType {{.*}} 'double'
// CHECK-NEXT: | `-ParmVarDecl {{.*}} 'double'
// GH92596
@@ -78,9 +78,9 @@ AFoo3 afoo3{0, 1};
// CHECK-NEXT: |-BinaryOperator {{.*}} '<dependent type>' '&&'
// CHECK-NEXT: | |-UnresolvedLookupExpr {{.*}} '<dependent type>' lvalue (no ADL) = 'Concept'
// CHECK-NEXT: | | |-TemplateArgument type 'int'
-// CHECK-NEXT: | | | `-BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'int'
// CHECK-NEXT: | | `-TemplateArgument type 'V'
-// CHECK-NEXT: | | `-TemplateTypeParmType {{.*}} 'V' dependent depth 0 index 1
+// CHECK-NEXT: | | `-typeDetails: TemplateTypeParmType {{.*}} 'V' dependent depth 0 index 1
template <typename... T1>
struct Foo {
@@ -92,15 +92,15 @@ using AFoo = Foo<T2...>;
AFoo a(1, 2);
// CHECK: |-CXXDeductionGuideDecl {{.*}} implicit <deduction guide for AFoo> 'auto (T2...) -> Foo<T2...>'
// CHECK-NEXT: | | `-ParmVarDecl {{.*}} 'T2...' pack
-// CHECK-NEXT: | `-CXXDeductionGuideDecl {{.*}} implicit used <deduction guide for AFoo> 'auto (int, int) -> Foo<int, int>' implicit_instantiation
+// CHECK: | `-CXXDeductionGuideDecl {{.*}} implicit used <deduction guide for AFoo> 'auto (int, int) -> Foo<int, int>' implicit_instantiation
template <typename T>
using BFoo = Foo<T, T>;
BFoo b2(1.0, 2.0);
// CHECK: |-CXXDeductionGuideDecl {{.*}} implicit <deduction guide for BFoo> 'auto (T, T) -> Foo<T, T>'
// CHECK-NEXT: | | |-ParmVarDecl {{.*}} 'T'
-// CHECK-NEXT: | | `-ParmVarDecl {{.*}} 'T'
-// CHECK-NEXT: | `-CXXDeductionGuideDecl {{.*}} implicit used <deduction guide for BFoo> 'auto (double, double) -> Foo<double, double>' implicit_instantiation
+// CHECK: | | `-ParmVarDecl {{.*}} 'T'
+// CHECK: | `-CXXDeductionGuideDecl {{.*}} implicit used <deduction guide for BFoo> 'auto (double, double) -> Foo<double, double>' implicit_instantiation
namespace GH90209 {
// Case 1: type template parameter
diff --git a/clang/test/AST/ast-dump-decl-json.c b/clang/test/AST/ast-dump-decl-json.c
index 7f53cda5020b5..6af57ffe9739f 100644
--- a/clang/test/AST/ast-dump-decl-json.c
+++ b/clang/test/AST/ast-dump-decl-json.c
@@ -1,1886 +1,2258 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -Wno-strict-prototypes -ast-dump=json -ast-dump-filter Test %s | FileCheck %s
-
-#include "Inputs/json-dump-include.h"
-
-int TestLocation;
-TestTypedefFromInclude TestLocationFromInclude;
-
-struct TestIndent {
- int x;
-};
-
-struct TestChildren {
- int x;
- struct y {
- int z;
- };
-};
-
-void testLabelDecl(void) {
- __label__ TestLabelDecl;
- TestLabelDecl: goto TestLabelDecl;
-}
-
-typedef int TestTypedefDecl;
-
-enum TestEnumDecl {
- testEnumDecl
-};
-
-struct TestEnumDeclAnon {
- enum {
- testEnumDeclAnon
- } e;
-};
-
-enum TestEnumDeclForward;
-
-struct TestRecordDecl {
- int i;
-};
-
-struct TestRecordDeclEmpty {
-};
-
-struct TestRecordDeclAnon1 {
- struct {
- } testRecordDeclAnon1;
-};
-
-struct TestRecordDeclAnon2 {
- struct {
- };
-};
-
-struct TestRecordDeclForward;
-
-enum testEnumConstantDecl {
- TestEnumConstantDecl,
- TestEnumConstantDeclInit = 1
-};
-
-struct TestIndirectFieldDecl {
- struct {
- int Field;
- };
-};
-
-// FIXME: It would be nice to dump the enum and its enumerators.
-int TestFunctionDecl(int x, enum { e } y) {
- return x;
-}
-
-// FIXME: It would be nice to dump 'Enum' and 'e'.
-int TestFunctionDecl2(enum Enum { e } x) { return x; }
-int TestFunctionDeclProto(int x);
-void TestFunctionDeclNoProto();
-extern int TestFunctionDeclSC(void);
-inline int TestFunctionDeclInline(void);
-
-struct testFieldDecl {
- int TestFieldDecl;
- int TestFieldDeclWidth : 1;
-};
-
-int TestVarDecl;
-extern int TestVarDeclSC;
-__thread int TestVarDeclThread;
-int TestVarDeclInit = 0;
-
-void testParmVarDecl(int TestParmVarDecl);
-
-// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "TypedefDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 1,
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 22,
-// CHECK-NEXT: "includedFrom": {
-// CHECK-NEXT: "file": "{{.*}}"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 7,
-// CHECK-NEXT: "includedFrom": {
-// CHECK-NEXT: "file": "{{.*}}"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 22,
-// CHECK-NEXT: "includedFrom": {
-// CHECK-NEXT: "file": "{{.*}}"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "TestTypedefFromInclude",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 5,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 12
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 12
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestLocation",
-// CHECK-NEXT: "mangledName": "TestLocation",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 6,
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 23
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 22
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 23
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestLocationFromInclude",
-// CHECK-NEXT: "mangledName": "TestLocationFromInclude",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "int",
-// CHECK-NEXT: "qualType": "TestTypedefFromInclude",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "RecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 8,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 10,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestIndent",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 9,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "RecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 12,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 12
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 17,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestChildren",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 13,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "RecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 14,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 16,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "parentDeclContextId": "0x{{.*}}",
-// CHECK-NEXT: "name": "y",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 15,
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "z",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "LabelDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 20,
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 9
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "TestLabelDecl"
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "TypedefDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 24,
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 15
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 7
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 15
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestTypedefDecl",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "EnumDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 26,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 12
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 28,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestEnumDecl",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "EnumConstantDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 27,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 12
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 12
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 12
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "testEnumDecl",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "RecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 30,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 16
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 34,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestEnumDeclAnon",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "EnumDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 31,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 33,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "EnumConstantDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 32,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 16
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 16
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 16
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "testEnumDeclAnon",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 33,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 31,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 33,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "e",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "enum TestEnumDeclAnon::(unnamed at {{.*}}:31:3)",
-// CHECK-NEXT: "qualType": "enum (unnamed enum at {{.*}}:31:3)"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "EnumDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 36,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestEnumDeclForward"
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "RecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 38,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 14
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 40,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestRecordDecl",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 39,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "RecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 42,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 43,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestRecordDeclEmpty",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "RecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 45,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 48,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestRecordDeclAnon1",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "RecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 46,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 47,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 46,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 47,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "testRecordDeclAnon1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "struct TestRecordDeclAnon1::(unnamed at {{.*}}:46:3)",
-// CHECK-NEXT: "qualType": "struct (unnamed struct at {{.*}}:46:3)"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "RecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 50,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 53,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestRecordDeclAnon2",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "RecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 51,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 52,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 51,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "struct TestRecordDeclAnon2::(anonymous at {{.*}}:51:3)"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "RecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 55,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 21
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 21
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestRecordDeclForward",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "EnumConstantDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 58,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 20
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 20
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 20
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestEnumConstantDecl",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "EnumConstantDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 59,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 24
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 24
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 30,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestEnumConstantDeclInit",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ConstantExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 30,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 30,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "1",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 30,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 30,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "1"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "RecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 62,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 21
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 66,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestIndirectFieldDecl",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "RecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 63,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 65,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 64,
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Field",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 63,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "struct TestIndirectFieldDecl::(anonymous at {{.*}}:63:3)"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IndirectFieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 64,
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "Field"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 69,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 16
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 71,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestFunctionDecl",
-// CHECK-NEXT: "mangledName": "TestFunctionDecl",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int (int, enum (unnamed enum at {{.*}}:69:29))"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 69,
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 40,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 40,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "y",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "enum (unnamed at {{.*}}:69:29)",
-// CHECK-NEXT: "qualType": "enum (unnamed enum at {{.*}}:69:29)"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 43,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 71,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ReturnStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 70,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 74,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 17
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 54,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestFunctionDecl2",
-// CHECK-NEXT: "mangledName": "TestFunctionDecl2",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int (enum Enum)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 39,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 39,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "enum Enum"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 42,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 54,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ReturnStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 44,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 51,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 51,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 51,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralCast",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 51,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 51,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "enum Enum"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 51,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 51,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "enum Enum"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "enum Enum"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 75,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 21
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 32,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestFunctionDeclProto",
-// CHECK-NEXT: "mangledName": "TestFunctionDeclProto",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int (int)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 31,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 31,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 76,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 23
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 30,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestFunctionDeclNoProto",
-// CHECK-NEXT: "mangledName": "TestFunctionDeclNoProto",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 77,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 18
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 35,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestFunctionDeclSC",
-// CHECK-NEXT: "mangledName": "TestFunctionDeclSC",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int (void)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "storageClass": "extern"
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 78,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 22
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 39,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestFunctionDeclInline",
-// CHECK-NEXT: "mangledName": "TestFunctionDeclInline",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int (void)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 81,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestFieldDecl",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 82,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 18
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 28,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestFieldDeclWidth",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "isBitfield": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ConstantExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 28,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 28,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "1",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 28,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 28,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "1"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 85,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 11
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 11
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestVarDecl",
-// CHECK-NEXT: "mangledName": "TestVarDecl",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 86,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestVarDeclSC",
-// CHECK-NEXT: "mangledName": "TestVarDeclSC",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "storageClass": "extern"
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 87,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 17
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 17
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestVarDeclThread",
-// CHECK-NEXT: "mangledName": "TestVarDeclThread",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "tls": "static"
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 88,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 15
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestVarDeclInit",
-// CHECK-NEXT: "mangledName": "TestVarDeclInit",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 90,
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 15
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 15
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestParmVarDecl",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
+// RUN: %clang_cc1 -triple x86_64-unknown-unknown -Wno-strict-prototypes -ast-dump=json -ast-dump-filter Test %s | FileCheck %s
+
+#include "Inputs/json-dump-include.h"
+
+int TestLocation;
+TestTypedefFromInclude TestLocationFromInclude;
+
+struct TestIndent {
+ int x;
+};
+
+struct TestChildren {
+ int x;
+ struct y {
+ int z;
+ };
+};
+
+void testLabelDecl(void) {
+ __label__ TestLabelDecl;
+ TestLabelDecl: goto TestLabelDecl;
+}
+
+typedef int TestTypedefDecl;
+
+enum TestEnumDecl {
+ testEnumDecl
+};
+
+struct TestEnumDeclAnon {
+ enum {
+ testEnumDeclAnon
+ } e;
+};
+
+enum TestEnumDeclForward;
+
+struct TestRecordDecl {
+ int i;
+};
+
+struct TestRecordDeclEmpty {
+};
+
+struct TestRecordDeclAnon1 {
+ struct {
+ } testRecordDeclAnon1;
+};
+
+struct TestRecordDeclAnon2 {
+ struct {
+ };
+};
+
+struct TestRecordDeclForward;
+
+enum testEnumConstantDecl {
+ TestEnumConstantDecl,
+ TestEnumConstantDeclInit = 1
+};
+
+struct TestIndirectFieldDecl {
+ struct {
+ int Field;
+ };
+};
+
+// FIXME: It would be nice to dump the enum and its enumerators.
+int TestFunctionDecl(int x, enum { e } y) {
+ return x;
+}
+
+// FIXME: It would be nice to dump 'Enum' and 'e'.
+int TestFunctionDecl2(enum Enum { e } x) { return x; }
+int TestFunctionDeclProto(int x);
+void TestFunctionDeclNoProto();
+extern int TestFunctionDeclSC(void);
+inline int TestFunctionDeclInline(void);
+
+struct testFieldDecl {
+ int TestFieldDecl;
+ int TestFieldDeclWidth : 1;
+};
+
+int TestVarDecl;
+extern int TestVarDeclSC;
+__thread int TestVarDeclThread;
+int TestVarDeclInit = 0;
+
+void testParmVarDecl(int TestParmVarDecl);
+
+// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "TypedefDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 12,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 1,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 22,
+// CHECK-NEXT: "includedFrom": {
+// CHECK-NEXT: "file": "{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 0,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 7,
+// CHECK-NEXT: "includedFrom": {
+// CHECK-NEXT: "file": "{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 12,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 22,
+// CHECK-NEXT: "includedFrom": {
+// CHECK-NEXT: "file": "{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "TestTypedefFromInclude",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 176,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 5,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 12
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 172,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 176,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 12
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestLocation",
+// CHECK-NEXT: "mangledName": "TestLocation",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 214,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 6,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 23
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 191,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 22
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 214,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 23
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestLocationFromInclude",
+// CHECK-NEXT: "mangledName": "TestLocationFromInclude",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "int",
+// CHECK-NEXT: "qualType": "TestTypedefFromInclude",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ElaboratedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "TestTypedefFromInclude"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "TestTypedefFromInclude"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefDecl",
+// CHECK-NEXT: "name": "TestTypedefFromInclude"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "RecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 249,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 8,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 242,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 273,
+// CHECK-NEXT: "line": 10,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestIndent",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 269,
+// CHECK-NEXT: "line": 9,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 265,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 269,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "RecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 286,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 12,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 12
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 279,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 344,
+// CHECK-NEXT: "line": 17,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestChildren",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 308,
+// CHECK-NEXT: "line": 13,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 304,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 308,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 321,
+// CHECK-NEXT: "line": 14,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 314,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 340,
+// CHECK-NEXT: "line": 16,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "parentDeclContextId": "0x{{.*}}",
+// CHECK-NEXT: "name": "y",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 334,
+// CHECK-NEXT: "line": 15,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 330,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 334,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "z",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "LabelDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 390,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 20,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 380,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 9
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 390,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "TestLabelDecl"
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "TypedefDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 461,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 24,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 15
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 449,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 7
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 461,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 15
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestTypedefDecl",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "EnumDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 486,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 26,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 12
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 481,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 518,
+// CHECK-NEXT: "line": 28,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestEnumDecl",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "EnumConstantDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 504,
+// CHECK-NEXT: "line": 27,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 12
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 504,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 12
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 504,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 12
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "testEnumDecl",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "RecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 531,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 30,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 16
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 524,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 591,
+// CHECK-NEXT: "line": 34,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestEnumDeclAnon",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "EnumDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 553,
+// CHECK-NEXT: "line": 31,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 553,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 585,
+// CHECK-NEXT: "line": 33,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "EnumConstantDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 565,
+// CHECK-NEXT: "line": 32,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 16
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 565,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 16
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 565,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 16
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "testEnumDeclAnon",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 587,
+// CHECK-NEXT: "line": 33,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 553,
+// CHECK-NEXT: "line": 31,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 587,
+// CHECK-NEXT: "line": 33,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "e",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "enum TestEnumDeclAnon::(unnamed at {{.*}}:31:3)",
+// CHECK-NEXT: "qualType": "enum (unnamed enum at {{.*}}:31:3)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "enum TestEnumDeclAnon::(unnamed at {{.*}}:31:3)",
+// CHECK-NEXT: "qualType": "enum (unnamed enum at {{.*}}:31:3)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer",
+// CHECK-NEXT: "enum"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "EnumDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 602,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 36,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 597,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 602,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestEnumDeclForward"
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "RecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 633,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 38,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 14
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 626,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 661,
+// CHECK-NEXT: "line": 40,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestRecordDecl",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 657,
+// CHECK-NEXT: "line": 39,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 653,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 657,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "RecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 674,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 42,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 667,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 697,
+// CHECK-NEXT: "line": 43,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestRecordDeclEmpty",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "RecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 710,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 45,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 703,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 771,
+// CHECK-NEXT: "line": 48,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestRecordDeclAnon1",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 735,
+// CHECK-NEXT: "line": 46,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 735,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 747,
+// CHECK-NEXT: "line": 47,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 749,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 735,
+// CHECK-NEXT: "line": 46,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 749,
+// CHECK-NEXT: "line": 47,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "testRecordDeclAnon1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "struct TestRecordDeclAnon1::(unnamed at {{.*}}:46:3)",
+// CHECK-NEXT: "qualType": "struct (unnamed struct at {{.*}}:46:3)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "struct TestRecordDeclAnon1::(unnamed at {{.*}}:46:3)",
+// CHECK-NEXT: "qualType": "struct (unnamed struct at {{.*}}:46:3)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "RecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 784,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 50,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 777,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 825,
+// CHECK-NEXT: "line": 53,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestRecordDeclAnon2",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 809,
+// CHECK-NEXT: "line": 51,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 809,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 821,
+// CHECK-NEXT: "line": 52,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 809,
+// CHECK-NEXT: "line": 51,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 809,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 809,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "struct TestRecordDeclAnon2::(anonymous at {{.*}}:51:3)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "struct TestRecordDeclAnon2::(anonymous at {{.*}}:51:3)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "RecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 838,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 55,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 21
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 831,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 838,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 21
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestRecordDeclForward",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "EnumConstantDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 895,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 58,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 20
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 895,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 20
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 895,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 20
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestEnumConstantDecl",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "EnumConstantDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 920,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 59,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 24
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 920,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 24
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 947,
+// CHECK-NEXT: "col": 30,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestEnumConstantDeclInit",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ConstantExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 947,
+// CHECK-NEXT: "col": 30,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 947,
+// CHECK-NEXT: "col": 30,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "1",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 947,
+// CHECK-NEXT: "col": 30,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 947,
+// CHECK-NEXT: "col": 30,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "1"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "RecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 963,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 62,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 21
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 956,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1022,
+// CHECK-NEXT: "line": 66,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestIndirectFieldDecl",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 990,
+// CHECK-NEXT: "line": 63,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 990,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1018,
+// CHECK-NEXT: "line": 65,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1008,
+// CHECK-NEXT: "line": 64,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1004,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1008,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Field",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 990,
+// CHECK-NEXT: "line": 63,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 990,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 990,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "struct TestIndirectFieldDecl::(anonymous at {{.*}}:63:3)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "struct TestIndirectFieldDecl::(anonymous at {{.*}}:63:3)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IndirectFieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1008,
+// CHECK-NEXT: "line": 64,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1008,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1008,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "Field"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1098,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 69,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 16
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1094,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1152,
+// CHECK-NEXT: "line": 71,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestFunctionDecl",
+// CHECK-NEXT: "mangledName": "TestFunctionDecl",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int (int, enum (unnamed enum at {{.*}}:69:29))"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1119,
+// CHECK-NEXT: "line": 69,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1115,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1119,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1133,
+// CHECK-NEXT: "col": 40,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1122,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1133,
+// CHECK-NEXT: "col": 40,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "y",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "enum (unnamed at {{.*}}:69:29)",
+// CHECK-NEXT: "qualType": "enum (unnamed enum at {{.*}}:69:29)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ElaboratedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "enum (unnamed enum at {{.*}}:69:29)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "ownedTagDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "EnumDecl",
+// CHECK-NEXT: "name": ""
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer",
+// CHECK-NEXT: "enum"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "EnumType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "enum (unnamed at {{.*}}:69:29)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "EnumDecl",
+// CHECK-NEXT: "name": ""
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer",
+// CHECK-NEXT: "enum"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1136,
+// CHECK-NEXT: "col": 43,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1152,
+// CHECK-NEXT: "line": 71,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ReturnStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1141,
+// CHECK-NEXT: "line": 70,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1148,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1148,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1148,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1148,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1148,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1213,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 74,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 17
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1209,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1262,
+// CHECK-NEXT: "col": 54,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestFunctionDecl2",
+// CHECK-NEXT: "mangledName": "TestFunctionDecl2",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int (enum Enum)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1247,
+// CHECK-NEXT: "col": 39,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1231,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1247,
+// CHECK-NEXT: "col": 39,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "enum Enum"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ElaboratedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "enum Enum"
+// CHECK-NEXT: },
+// CHECK-NEXT: "ownedTagDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "EnumDecl",
+// CHECK-NEXT: "name": "Enum"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer",
+// CHECK-NEXT: "enum"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "EnumType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "enum Enum"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "EnumDecl",
+// CHECK-NEXT: "name": "Enum"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer",
+// CHECK-NEXT: "enum"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1250,
+// CHECK-NEXT: "col": 42,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1262,
+// CHECK-NEXT: "col": 54,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ReturnStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1252,
+// CHECK-NEXT: "col": 44,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1259,
+// CHECK-NEXT: "col": 51,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1259,
+// CHECK-NEXT: "col": 51,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1259,
+// CHECK-NEXT: "col": 51,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralCast",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1259,
+// CHECK-NEXT: "col": 51,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1259,
+// CHECK-NEXT: "col": 51,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "enum Enum"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1259,
+// CHECK-NEXT: "col": 51,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1259,
+// CHECK-NEXT: "col": 51,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "enum Enum"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "enum Enum"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer",
+// CHECK-NEXT: "enum"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1269,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 75,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 21
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1265,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1296,
+// CHECK-NEXT: "col": 32,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestFunctionDeclProto",
+// CHECK-NEXT: "mangledName": "TestFunctionDeclProto",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int (int)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1295,
+// CHECK-NEXT: "col": 31,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1291,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1295,
+// CHECK-NEXT: "col": 31,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1305,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 76,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 23
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1300,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1329,
+// CHECK-NEXT: "col": 30,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestFunctionDeclNoProto",
+// CHECK-NEXT: "mangledName": "TestFunctionDeclNoProto",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1344,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 77,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 18
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1333,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1367,
+// CHECK-NEXT: "col": 35,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestFunctionDeclSC",
+// CHECK-NEXT: "mangledName": "TestFunctionDeclSC",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int (void)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "storageClass": "extern"
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1382,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 78,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 22
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1371,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1409,
+// CHECK-NEXT: "col": 39,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestFunctionDeclInline",
+// CHECK-NEXT: "mangledName": "TestFunctionDeclInline",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int (void)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1445,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 81,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1441,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1445,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestFieldDecl",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1467,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 82,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 18
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1463,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1488,
+// CHECK-NEXT: "col": 28,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestFieldDeclWidth",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isBitfield": true,
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ConstantExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1488,
+// CHECK-NEXT: "col": 28,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1488,
+// CHECK-NEXT: "col": 28,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "1",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1488,
+// CHECK-NEXT: "col": 28,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1488,
+// CHECK-NEXT: "col": 28,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "1"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1502,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 85,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 11
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1498,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1502,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 11
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestVarDecl",
+// CHECK-NEXT: "mangledName": "TestVarDecl",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1527,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 86,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1516,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1527,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestVarDeclSC",
+// CHECK-NEXT: "mangledName": "TestVarDeclSC",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "storageClass": "extern",
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1556,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 87,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 17
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1543,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1556,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 17
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestVarDeclThread",
+// CHECK-NEXT: "mangledName": "TestVarDeclThread",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "tls": "static",
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1580,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 88,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 15
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1576,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1598,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestVarDeclInit",
+// CHECK-NEXT: "mangledName": "TestVarDeclInit",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1598,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1598,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1629,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 90,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 15
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1625,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1629,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 15
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestParmVarDecl",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
diff --git a/clang/test/AST/ast-dump-decl-json.m b/clang/test/AST/ast-dump-decl-json.m
index f7067ac0d3b77..619cfdb29ff1b 100644
--- a/clang/test/AST/ast-dump-decl-json.m
+++ b/clang/test/AST/ast-dump-decl-json.m
@@ -1,1965 +1,2395 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -Wno-unused -fblocks -ast-dump=json -ast-dump-filter Test %s | FileCheck %s
-
- at protocol P
- at end
-
- at interface A
- at end
-
- at interface TestObjCIvarDecl : A
- at end
-
- at implementation TestObjCIvarDecl {
- int varDefault;
- @private int varPrivate;
- @protected int varProtected;
- @public int varPublic;
- @package int varPackage;
-}
- at end
-
- at interface testObjCMethodDecl : A {
-}
-- (int) TestObjCMethodDecl: (int)i, ...;
- at end
-
- at implementation testObjCMethodDecl
-- (int) TestObjCMethodDecl: (int)i, ... {
- return 0;
-}
- at end
-
- at protocol TestObjCProtocolDecl
-- (void) foo;
- at end
-
- at interface TestObjCClass : A <P>
-- (void) foo;
- at end
-
- at implementation TestObjCClass : A {
- int i;
-}
-- (void) foo {
-}
- at end
-
- at interface TestObjCClass (TestObjCCategoryDecl) <P>
-- (void) bar;
- at end
-
- at interface TestGenericInterface<T> : A<P> {
-}
- at end
-
- at implementation TestObjCClass (TestObjCCategoryDecl)
-- (void) bar {
-}
- at end
-
- at compatibility_alias TestObjCCompatibleAliasDecl A;
-
- at interface TestObjCProperty: A
- at property(getter=getterFoo, setter=setterFoo:) int foo;
- at property int bar;
- at end
-
- at implementation TestObjCProperty {
- int i;
-}
- at synthesize foo=i;
- at synthesize bar;
- at end
-
-void TestBlockDecl(int x) {
- ^(int y, ...){ x; };
-}
-
- at interface B
-+ (int) foo;
- at end
-
-void f(void) {
- __typeof__(B.foo) Test;
-}
-
-// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "ObjCInterfaceDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 9,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 16
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 10,
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestObjCIvarDecl",
-// CHECK-NEXT: "mangledName": "_OBJC_CLASS_$_TestObjCIvarDecl",
-// CHECK-NEXT: "super": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCInterfaceDecl",
-// CHECK-NEXT: "name": "A"
-// CHECK-NEXT: },
-// CHECK-NEXT: "implementation": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCImplementationDecl",
-// CHECK-NEXT: "name": "TestObjCIvarDecl"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "ObjCImplementationDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 12,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 16
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 19,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestObjCIvarDecl",
-// CHECK-NEXT: "super": {
-// CHECK-NEXT: "id": "0x0"
-// CHECK-NEXT: },
-// CHECK-NEXT: "interface": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCInterfaceDecl",
-// CHECK-NEXT: "name": "TestObjCIvarDecl"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCIvarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 13,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "varDefault",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "access": "private"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCIvarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 14,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "varPrivate",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "access": "private"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCIvarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 15,
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 12
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 12
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "varProtected",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "access": "protected"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCIvarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 16,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 9
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 9
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "varPublic",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "access": "public"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCIvarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 17,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "varPackage",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "access": "package"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "ObjCMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 23,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 40,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestObjCMethodDecl:",
-// CHECK-NEXT: "mangledName": "-[testObjCMethodDecl TestObjCMethodDecl:]",
-// CHECK-NEXT: "returnType": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "instance": true,
-// CHECK-NEXT: "variadic": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 34,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 30,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 34,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "ObjCMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 27,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 29,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestObjCMethodDecl:",
-// CHECK-NEXT: "mangledName": "-[testObjCMethodDecl TestObjCMethodDecl:]",
-// CHECK-NEXT: "returnType": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "instance": true,
-// CHECK-NEXT: "variadic": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitParamDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "self",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "testObjCMethodDecl *"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitParamDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "_cmd",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "SEL *",
-// CHECK-NEXT: "qualType": "SEL",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 27,
-// CHECK-NEXT: "col": 34,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 30,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 34,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 41,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 29,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ReturnStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 28,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "ObjCProtocolDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 32,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 20
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 34,
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestObjCProtocolDecl",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 33,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "foo",
-// CHECK-NEXT: "mangledName": "-[TestObjCProtocolDecl foo]",
-// CHECK-NEXT: "returnType": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "instance": true
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "ObjCInterfaceDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 36,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 38,
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestObjCClass",
-// CHECK-NEXT: "mangledName": "_OBJC_CLASS_$_TestObjCClass",
-// CHECK-NEXT: "super": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCInterfaceDecl",
-// CHECK-NEXT: "name": "A"
-// CHECK-NEXT: },
-// CHECK-NEXT: "implementation": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCImplementationDecl",
-// CHECK-NEXT: "name": "TestObjCClass"
-// CHECK-NEXT: },
-// CHECK-NEXT: "protocols": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCProtocolDecl",
-// CHECK-NEXT: "name": "P"
-// CHECK-NEXT: }
-// CHECK-NEXT: ],
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 37,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "foo",
-// CHECK-NEXT: "mangledName": "-[TestObjCClass foo]",
-// CHECK-NEXT: "returnType": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "instance": true
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "ObjCImplementationDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 40,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 45,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestObjCClass",
-// CHECK-NEXT: "super": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCInterfaceDecl",
-// CHECK-NEXT: "name": "A"
-// CHECK-NEXT: },
-// CHECK-NEXT: "interface": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCInterfaceDecl",
-// CHECK-NEXT: "name": "TestObjCClass"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCIvarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 41,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "access": "private"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 43,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 44,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "foo",
-// CHECK-NEXT: "mangledName": "-[TestObjCClass foo]",
-// CHECK-NEXT: "returnType": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "instance": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitParamDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "self",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "TestObjCClass *"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitParamDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "_cmd",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "SEL *",
-// CHECK-NEXT: "qualType": "SEL",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 43,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 44,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "ObjCCategoryDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 47,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 49,
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestObjCCategoryDecl",
-// CHECK-NEXT: "interface": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCInterfaceDecl",
-// CHECK-NEXT: "name": "TestObjCClass"
-// CHECK-NEXT: },
-// CHECK-NEXT: "implementation": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCCategoryImplDecl",
-// CHECK-NEXT: "name": "TestObjCCategoryDecl"
-// CHECK-NEXT: },
-// CHECK-NEXT: "protocols": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCProtocolDecl",
-// CHECK-NEXT: "name": "P"
-// CHECK-NEXT: }
-// CHECK-NEXT: ],
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 48,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "bar",
-// CHECK-NEXT: "mangledName": "-[TestObjCClass(TestObjCCategoryDecl) bar]",
-// CHECK-NEXT: "returnType": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "instance": true
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "ObjCInterfaceDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 51,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 20
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 53,
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestGenericInterface",
-// CHECK-NEXT: "mangledName": "_OBJC_CLASS_$_TestGenericInterface",
-// CHECK-NEXT: "super": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCInterfaceDecl",
-// CHECK-NEXT: "name": "A"
-// CHECK-NEXT: },
-// CHECK-NEXT: "implementation": {
-// CHECK-NEXT: "id": "0x0"
-// CHECK-NEXT: },
-// CHECK-NEXT: "protocols": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCProtocolDecl",
-// CHECK-NEXT: "name": "P"
-// CHECK-NEXT: }
-// CHECK-NEXT: ],
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCTypeParamDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 51,
-// CHECK-NEXT: "col": 33,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 33,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 33,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "T",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "id",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "ObjCCategoryImplDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 55,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 58,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestObjCCategoryDecl",
-// CHECK-NEXT: "interface": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCInterfaceDecl",
-// CHECK-NEXT: "name": "TestObjCClass"
-// CHECK-NEXT: },
-// CHECK-NEXT: "categoryDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCCategoryDecl",
-// CHECK-NEXT: "name": "TestObjCCategoryDecl"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 56,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 57,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "bar",
-// CHECK-NEXT: "mangledName": "-[TestObjCClass(TestObjCCategoryDecl) bar]",
-// CHECK-NEXT: "returnType": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "instance": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitParamDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "self",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "TestObjCClass *"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitParamDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "_cmd",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "SEL *",
-// CHECK-NEXT: "qualType": "SEL",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 56,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 57,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "ObjCCompatibleAliasDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 60,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestObjCCompatibleAliasDecl",
-// CHECK-NEXT: "interface": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCInterfaceDecl",
-// CHECK-NEXT: "name": "A"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "ObjCInterfaceDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 62,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 16
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 65,
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestObjCProperty",
-// CHECK-NEXT: "mangledName": "_OBJC_CLASS_$_TestObjCProperty",
-// CHECK-NEXT: "super": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCInterfaceDecl",
-// CHECK-NEXT: "name": "A"
-// CHECK-NEXT: },
-// CHECK-NEXT: "implementation": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCImplementationDecl",
-// CHECK-NEXT: "name": "TestObjCProperty"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCPropertyDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 63,
-// CHECK-NEXT: "col": 52,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 52,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "foo",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "getter": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCMethodDecl",
-// CHECK-NEXT: "name": "getterFoo"
-// CHECK-NEXT: },
-// CHECK-NEXT: "setter": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCMethodDecl",
-// CHECK-NEXT: "name": "setterFoo:"
-// CHECK-NEXT: },
-// CHECK-NEXT: "assign": true,
-// CHECK-NEXT: "readwrite": true,
-// CHECK-NEXT: "atomic": true,
-// CHECK-NEXT: "unsafe_unretained": true
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCPropertyDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 64,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "bar",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "assign": true,
-// CHECK-NEXT: "readwrite": true,
-// CHECK-NEXT: "atomic": true,
-// CHECK-NEXT: "unsafe_unretained": true
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 63,
-// CHECK-NEXT: "col": 52,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 52,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 52,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "getterFoo",
-// CHECK-NEXT: "mangledName": "-[TestObjCProperty getterFoo]",
-// CHECK-NEXT: "returnType": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "instance": true
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 52,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 52,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 52,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "setterFoo:",
-// CHECK-NEXT: "mangledName": "-[TestObjCProperty setterFoo:]",
-// CHECK-NEXT: "returnType": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "instance": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 52,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 52,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 52,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "foo",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 64,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "bar",
-// CHECK-NEXT: "mangledName": "-[TestObjCProperty bar]",
-// CHECK-NEXT: "returnType": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "instance": true
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "setBar:",
-// CHECK-NEXT: "mangledName": "-[TestObjCProperty setBar:]",
-// CHECK-NEXT: "returnType": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "instance": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "bar",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "ObjCImplementationDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 67,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 16
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 72,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestObjCProperty",
-// CHECK-NEXT: "super": {
-// CHECK-NEXT: "id": "0x0"
-// CHECK-NEXT: },
-// CHECK-NEXT: "interface": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCInterfaceDecl",
-// CHECK-NEXT: "name": "TestObjCProperty"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCIvarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 68,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "access": "private"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCPropertyImplDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 70,
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "foo",
-// CHECK-NEXT: "implKind": "synthesize",
-// CHECK-NEXT: "propertyDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCPropertyDecl",
-// CHECK-NEXT: "name": "foo"
-// CHECK-NEXT: },
-// CHECK-NEXT: "ivarDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCIvarDecl",
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCIvarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 71,
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "bar",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "synthesized": true,
-// CHECK-NEXT: "access": "private"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCPropertyImplDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "bar",
-// CHECK-NEXT: "implKind": "synthesize",
-// CHECK-NEXT: "propertyDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCPropertyDecl",
-// CHECK-NEXT: "name": "bar"
-// CHECK-NEXT: },
-// CHECK-NEXT: "ivarDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCIvarDecl",
-// CHECK-NEXT: "name": "bar",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 70,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "getterFoo",
-// CHECK-NEXT: "mangledName": "-[TestObjCProperty getterFoo]",
-// CHECK-NEXT: "returnType": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "instance": true
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "setterFoo:",
-// CHECK-NEXT: "mangledName": "-[TestObjCProperty setterFoo:]",
-// CHECK-NEXT: "returnType": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "instance": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 63,
-// CHECK-NEXT: "col": 52,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 52,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 52,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "foo",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 71,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "bar",
-// CHECK-NEXT: "mangledName": "-[TestObjCProperty bar]",
-// CHECK-NEXT: "returnType": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "instance": true
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "setBar:",
-// CHECK-NEXT: "mangledName": "-[TestObjCProperty setBar:]",
-// CHECK-NEXT: "returnType": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "instance": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 64,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "bar",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 74,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 76,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestBlockDecl",
-// CHECK-NEXT: "mangledName": "_TestBlockDecl",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (int)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 74,
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 76,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ExprWithCleanups",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 75,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (^)(int, ...)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "cleanupsHaveSideEffects": true,
-// CHECK-NEXT: "cleanups": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BlockDecl"
-// CHECK-NEXT: }
-// CHECK-NEXT: ],
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BlockExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (^)(int, ...)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BlockDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "variadic": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "y",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "kind": "Capture",
-// CHECK-NEXT: "var": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 83,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Test",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "int",
-// CHECK-NEXT: "qualType": "typeof (B.foo)"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
+// RUN: %clang_cc1 -triple x86_64-apple-darwin -Wno-unused -fblocks -ast-dump=json -ast-dump-filter Test %s | FileCheck %s
+
+ at protocol P
+ at end
+
+ at interface A
+ at end
+
+ at interface TestObjCIvarDecl : A
+ at end
+
+ at implementation TestObjCIvarDecl {
+ int varDefault;
+ @private int varPrivate;
+ @protected int varProtected;
+ @public int varPublic;
+ @package int varPackage;
+}
+ at end
+
+ at interface testObjCMethodDecl : A {
+}
+- (int) TestObjCMethodDecl: (int)i, ...;
+ at end
+
+ at implementation testObjCMethodDecl
+- (int) TestObjCMethodDecl: (int)i, ... {
+ return 0;
+}
+ at end
+
+ at protocol TestObjCProtocolDecl
+- (void) foo;
+ at end
+
+ at interface TestObjCClass : A <P>
+- (void) foo;
+ at end
+
+ at implementation TestObjCClass : A {
+ int i;
+}
+- (void) foo {
+}
+ at end
+
+ at interface TestObjCClass (TestObjCCategoryDecl) <P>
+- (void) bar;
+ at end
+
+ at interface TestGenericInterface<T> : A<P> {
+}
+ at end
+
+ at implementation TestObjCClass (TestObjCCategoryDecl)
+- (void) bar {
+}
+ at end
+
+ at compatibility_alias TestObjCCompatibleAliasDecl A;
+
+ at interface TestObjCProperty: A
+ at property(getter=getterFoo, setter=setterFoo:) int foo;
+ at property int bar;
+ at end
+
+ at implementation TestObjCProperty {
+ int i;
+}
+ at synthesize foo=i;
+ at synthesize bar;
+ at end
+
+void TestBlockDecl(int x) {
+ ^(int y, ...){ x; };
+}
+
+ at interface B
++ (int) foo;
+ at end
+
+void f(void) {
+ __typeof__(B.foo) Test;
+}
+
+// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "ObjCInterfaceDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 180,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 9,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 16
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 169,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 203,
+// CHECK-NEXT: "line": 10,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestObjCIvarDecl",
+// CHECK-NEXT: "mangledName": "_OBJC_CLASS_$_TestObjCIvarDecl",
+// CHECK-NEXT: "super": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCInterfaceDecl",
+// CHECK-NEXT: "name": "A"
+// CHECK-NEXT: },
+// CHECK-NEXT: "implementation": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCImplementationDecl",
+// CHECK-NEXT: "name": "TestObjCIvarDecl"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "ObjCImplementationDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 226,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 12,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 16
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 210,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 382,
+// CHECK-NEXT: "line": 19,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestObjCIvarDecl",
+// CHECK-NEXT: "super": {
+// CHECK-NEXT: "id": "0x0"
+// CHECK-NEXT: },
+// CHECK-NEXT: "interface": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCInterfaceDecl",
+// CHECK-NEXT: "name": "TestObjCIvarDecl"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCIvarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 252,
+// CHECK-NEXT: "line": 13,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 248,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 252,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "varDefault",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "access": "private"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCIvarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 280,
+// CHECK-NEXT: "line": 14,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 276,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 280,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "varPrivate",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "access": "private"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCIvarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 310,
+// CHECK-NEXT: "line": 15,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 12
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 306,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 310,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 12
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "varProtected",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "access": "protected"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCIvarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 339,
+// CHECK-NEXT: "line": 16,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 9
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 335,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 339,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 9
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "varPublic",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "access": "public"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCIvarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 366,
+// CHECK-NEXT: "line": 17,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 362,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 366,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "varPackage",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "access": "package"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "ObjCMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 430,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 23,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 430,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 469,
+// CHECK-NEXT: "col": 40,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestObjCMethodDecl:",
+// CHECK-NEXT: "mangledName": "-[testObjCMethodDecl TestObjCMethodDecl:]",
+// CHECK-NEXT: "returnType": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "instance": true,
+// CHECK-NEXT: "variadic": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 463,
+// CHECK-NEXT: "col": 34,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 459,
+// CHECK-NEXT: "col": 30,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 463,
+// CHECK-NEXT: "col": 34,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "ObjCMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 516,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 27,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 516,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 572,
+// CHECK-NEXT: "line": 29,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestObjCMethodDecl:",
+// CHECK-NEXT: "mangledName": "-[testObjCMethodDecl TestObjCMethodDecl:]",
+// CHECK-NEXT: "returnType": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "instance": true,
+// CHECK-NEXT: "variadic": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitParamDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "self",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "testObjCMethodDecl *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCObjectPointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "testObjCMethodDecl *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCInterfaceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "testObjCMethodDecl"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCInterfaceDecl",
+// CHECK-NEXT: "name": "testObjCMethodDecl"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitParamDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "_cmd",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "SEL *",
+// CHECK-NEXT: "qualType": "SEL",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "SEL"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefDecl",
+// CHECK-NEXT: "name": "SEL"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "PointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "SEL *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "SEL"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 549,
+// CHECK-NEXT: "line": 27,
+// CHECK-NEXT: "col": 34,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 545,
+// CHECK-NEXT: "col": 30,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 549,
+// CHECK-NEXT: "col": 34,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 556,
+// CHECK-NEXT: "col": 41,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 572,
+// CHECK-NEXT: "line": 29,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ReturnStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 561,
+// CHECK-NEXT: "line": 28,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 568,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 568,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 568,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "ObjCProtocolDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 593,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 32,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 20
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 583,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 631,
+// CHECK-NEXT: "line": 34,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestObjCProtocolDecl",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 615,
+// CHECK-NEXT: "line": 33,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 615,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 627,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "foo",
+// CHECK-NEXT: "mangledName": "-[TestObjCProtocolDecl foo]",
+// CHECK-NEXT: "returnType": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "instance": true
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "ObjCInterfaceDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 649,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 36,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 638,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 688,
+// CHECK-NEXT: "line": 38,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestObjCClass",
+// CHECK-NEXT: "mangledName": "_OBJC_CLASS_$_TestObjCClass",
+// CHECK-NEXT: "super": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCInterfaceDecl",
+// CHECK-NEXT: "name": "A"
+// CHECK-NEXT: },
+// CHECK-NEXT: "implementation": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCImplementationDecl",
+// CHECK-NEXT: "name": "TestObjCClass"
+// CHECK-NEXT: },
+// CHECK-NEXT: "protocols": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCProtocolDecl",
+// CHECK-NEXT: "name": "P"
+// CHECK-NEXT: }
+// CHECK-NEXT: ],
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 672,
+// CHECK-NEXT: "line": 37,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 672,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 684,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "foo",
+// CHECK-NEXT: "mangledName": "-[TestObjCClass foo]",
+// CHECK-NEXT: "returnType": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "instance": true
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "ObjCImplementationDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 711,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 40,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 695,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 764,
+// CHECK-NEXT: "line": 45,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestObjCClass",
+// CHECK-NEXT: "super": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCInterfaceDecl",
+// CHECK-NEXT: "name": "A"
+// CHECK-NEXT: },
+// CHECK-NEXT: "interface": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCInterfaceDecl",
+// CHECK-NEXT: "name": "TestObjCClass"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCIvarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 738,
+// CHECK-NEXT: "line": 41,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 734,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 738,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "access": "private"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 745,
+// CHECK-NEXT: "line": 43,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 745,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 761,
+// CHECK-NEXT: "line": 44,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "foo",
+// CHECK-NEXT: "mangledName": "-[TestObjCClass foo]",
+// CHECK-NEXT: "returnType": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "instance": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitParamDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "self",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "TestObjCClass *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCObjectPointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "TestObjCClass *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCInterfaceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "TestObjCClass"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCInterfaceDecl",
+// CHECK-NEXT: "name": "TestObjCClass"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitParamDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "_cmd",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "SEL *",
+// CHECK-NEXT: "qualType": "SEL",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "SEL"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefDecl",
+// CHECK-NEXT: "name": "SEL"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "PointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "SEL *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "SEL"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 758,
+// CHECK-NEXT: "line": 43,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 761,
+// CHECK-NEXT: "line": 44,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "ObjCCategoryDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 783,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 47,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 772,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 841,
+// CHECK-NEXT: "line": 49,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestObjCCategoryDecl",
+// CHECK-NEXT: "interface": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCInterfaceDecl",
+// CHECK-NEXT: "name": "TestObjCClass"
+// CHECK-NEXT: },
+// CHECK-NEXT: "implementation": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCCategoryImplDecl",
+// CHECK-NEXT: "name": "TestObjCCategoryDecl"
+// CHECK-NEXT: },
+// CHECK-NEXT: "protocols": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCProtocolDecl",
+// CHECK-NEXT: "name": "P"
+// CHECK-NEXT: }
+// CHECK-NEXT: ],
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 825,
+// CHECK-NEXT: "line": 48,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 825,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 837,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "bar",
+// CHECK-NEXT: "mangledName": "-[TestObjCClass(TestObjCCategoryDecl) bar]",
+// CHECK-NEXT: "returnType": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "instance": true
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "ObjCInterfaceDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 859,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 51,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 20
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 848,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 897,
+// CHECK-NEXT: "line": 53,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestGenericInterface",
+// CHECK-NEXT: "mangledName": "_OBJC_CLASS_$_TestGenericInterface",
+// CHECK-NEXT: "super": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCInterfaceDecl",
+// CHECK-NEXT: "name": "A"
+// CHECK-NEXT: },
+// CHECK-NEXT: "implementation": {
+// CHECK-NEXT: "id": "0x0"
+// CHECK-NEXT: },
+// CHECK-NEXT: "protocols": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCProtocolDecl",
+// CHECK-NEXT: "name": "P"
+// CHECK-NEXT: }
+// CHECK-NEXT: ],
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCTypeParamDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 880,
+// CHECK-NEXT: "line": 51,
+// CHECK-NEXT: "col": 33,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 880,
+// CHECK-NEXT: "col": 33,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 880,
+// CHECK-NEXT: "col": 33,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "T",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "id",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "ObjCCategoryImplDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 920,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 55,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 904,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 977,
+// CHECK-NEXT: "line": 58,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestObjCCategoryDecl",
+// CHECK-NEXT: "interface": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCInterfaceDecl",
+// CHECK-NEXT: "name": "TestObjCClass"
+// CHECK-NEXT: },
+// CHECK-NEXT: "categoryDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCCategoryDecl",
+// CHECK-NEXT: "name": "TestObjCCategoryDecl"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 958,
+// CHECK-NEXT: "line": 56,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 958,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 974,
+// CHECK-NEXT: "line": 57,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "bar",
+// CHECK-NEXT: "mangledName": "-[TestObjCClass(TestObjCCategoryDecl) bar]",
+// CHECK-NEXT: "returnType": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "instance": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitParamDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "self",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "TestObjCClass *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCObjectPointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "TestObjCClass *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCInterfaceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "TestObjCClass"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCInterfaceDecl",
+// CHECK-NEXT: "name": "TestObjCClass"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitParamDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "_cmd",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "SEL *",
+// CHECK-NEXT: "qualType": "SEL",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "SEL"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefDecl",
+// CHECK-NEXT: "name": "SEL"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "PointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "SEL *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "SEL"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 971,
+// CHECK-NEXT: "line": 56,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 974,
+// CHECK-NEXT: "line": 57,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "ObjCCompatibleAliasDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 985,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 60,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 985,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 985,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestObjCCompatibleAliasDecl",
+// CHECK-NEXT: "interface": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCInterfaceDecl",
+// CHECK-NEXT: "name": "A"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "ObjCInterfaceDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1051,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 62,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 16
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1040,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1150,
+// CHECK-NEXT: "line": 65,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestObjCProperty",
+// CHECK-NEXT: "mangledName": "_OBJC_CLASS_$_TestObjCProperty",
+// CHECK-NEXT: "super": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCInterfaceDecl",
+// CHECK-NEXT: "name": "A"
+// CHECK-NEXT: },
+// CHECK-NEXT: "implementation": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCImplementationDecl",
+// CHECK-NEXT: "name": "TestObjCProperty"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCPropertyDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1123,
+// CHECK-NEXT: "line": 63,
+// CHECK-NEXT: "col": 52,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1072,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1123,
+// CHECK-NEXT: "col": 52,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "foo",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "getter": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCMethodDecl",
+// CHECK-NEXT: "name": "getterFoo"
+// CHECK-NEXT: },
+// CHECK-NEXT: "setter": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCMethodDecl",
+// CHECK-NEXT: "name": "setterFoo:"
+// CHECK-NEXT: },
+// CHECK-NEXT: "assign": true,
+// CHECK-NEXT: "readwrite": true,
+// CHECK-NEXT: "atomic": true,
+// CHECK-NEXT: "unsafe_unretained": true
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCPropertyDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1143,
+// CHECK-NEXT: "line": 64,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1129,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1143,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "bar",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "assign": true,
+// CHECK-NEXT: "readwrite": true,
+// CHECK-NEXT: "atomic": true,
+// CHECK-NEXT: "unsafe_unretained": true
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1123,
+// CHECK-NEXT: "line": 63,
+// CHECK-NEXT: "col": 52,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1123,
+// CHECK-NEXT: "col": 52,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1123,
+// CHECK-NEXT: "col": 52,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "getterFoo",
+// CHECK-NEXT: "mangledName": "-[TestObjCProperty getterFoo]",
+// CHECK-NEXT: "returnType": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "instance": true
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1123,
+// CHECK-NEXT: "col": 52,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1123,
+// CHECK-NEXT: "col": 52,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1123,
+// CHECK-NEXT: "col": 52,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "setterFoo:",
+// CHECK-NEXT: "mangledName": "-[TestObjCProperty setterFoo:]",
+// CHECK-NEXT: "returnType": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "instance": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1123,
+// CHECK-NEXT: "col": 52,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1123,
+// CHECK-NEXT: "col": 52,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1123,
+// CHECK-NEXT: "col": 52,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "foo",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1143,
+// CHECK-NEXT: "line": 64,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1143,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1143,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "bar",
+// CHECK-NEXT: "mangledName": "-[TestObjCProperty bar]",
+// CHECK-NEXT: "returnType": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "instance": true
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1143,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1143,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1143,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "setBar:",
+// CHECK-NEXT: "mangledName": "-[TestObjCProperty setBar:]",
+// CHECK-NEXT: "returnType": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "instance": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1143,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1143,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1143,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "bar",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "ObjCImplementationDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1173,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 67,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 16
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1157,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1244,
+// CHECK-NEXT: "line": 72,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestObjCProperty",
+// CHECK-NEXT: "super": {
+// CHECK-NEXT: "id": "0x0"
+// CHECK-NEXT: },
+// CHECK-NEXT: "interface": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCInterfaceDecl",
+// CHECK-NEXT: "name": "TestObjCProperty"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCIvarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1199,
+// CHECK-NEXT: "line": 68,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1195,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1199,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "access": "private"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCPropertyImplDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1218,
+// CHECK-NEXT: "line": 70,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1206,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1222,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "foo",
+// CHECK-NEXT: "implKind": "synthesize",
+// CHECK-NEXT: "propertyDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCPropertyDecl",
+// CHECK-NEXT: "name": "foo"
+// CHECK-NEXT: },
+// CHECK-NEXT: "ivarDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCIvarDecl",
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCIvarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1238,
+// CHECK-NEXT: "line": 71,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1238,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1238,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "bar",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "synthesized": true,
+// CHECK-NEXT: "access": "private"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCPropertyImplDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1238,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1226,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1238,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "bar",
+// CHECK-NEXT: "implKind": "synthesize",
+// CHECK-NEXT: "propertyDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCPropertyDecl",
+// CHECK-NEXT: "name": "bar"
+// CHECK-NEXT: },
+// CHECK-NEXT: "ivarDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCIvarDecl",
+// CHECK-NEXT: "name": "bar",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1206,
+// CHECK-NEXT: "line": 70,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1206,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1218,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "getterFoo",
+// CHECK-NEXT: "mangledName": "-[TestObjCProperty getterFoo]",
+// CHECK-NEXT: "returnType": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "instance": true
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1206,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1206,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1218,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "setterFoo:",
+// CHECK-NEXT: "mangledName": "-[TestObjCProperty setterFoo:]",
+// CHECK-NEXT: "returnType": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "instance": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1123,
+// CHECK-NEXT: "line": 63,
+// CHECK-NEXT: "col": 52,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1123,
+// CHECK-NEXT: "col": 52,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1123,
+// CHECK-NEXT: "col": 52,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "foo",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1226,
+// CHECK-NEXT: "line": 71,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1226,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1238,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "bar",
+// CHECK-NEXT: "mangledName": "-[TestObjCProperty bar]",
+// CHECK-NEXT: "returnType": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "instance": true
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1226,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1226,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1238,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "setBar:",
+// CHECK-NEXT: "mangledName": "-[TestObjCProperty setBar:]",
+// CHECK-NEXT: "returnType": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "instance": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1143,
+// CHECK-NEXT: "line": 64,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1143,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1143,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "bar",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1257,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 74,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1252,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1305,
+// CHECK-NEXT: "line": 76,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestBlockDecl",
+// CHECK-NEXT: "mangledName": "_TestBlockDecl",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (int)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1275,
+// CHECK-NEXT: "line": 74,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1271,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1275,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1278,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1305,
+// CHECK-NEXT: "line": 76,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ExprWithCleanups",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1283,
+// CHECK-NEXT: "line": 75,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1301,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (^)(int, ...)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "cleanupsHaveSideEffects": true,
+// CHECK-NEXT: "cleanups": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BlockDecl"
+// CHECK-NEXT: }
+// CHECK-NEXT: ],
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BlockExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1283,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1301,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (^)(int, ...)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BlockDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1283,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1283,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1301,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "variadic": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1289,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1285,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1289,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "y",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "kind": "Capture",
+// CHECK-NEXT: "var": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1296,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1301,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1298,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1298,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1298,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1298,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "const",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1382,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 83,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1364,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1382,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Test",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "int",
+// CHECK-NEXT: "qualType": "typeof (B.foo)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypeOfExprType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "typeof (B.foo)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "PseudoObjectExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1374,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1380,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParenExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1374,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1380,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<pseudo-object type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCPropertyRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1375,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1377,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<pseudo-object type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "propertyKind": "implicit",
+// CHECK-NEXT: "getter": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCMethodDecl",
+// CHECK-NEXT: "name": "foo"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isMessagingGetter": true
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCMessageExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1377,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1377,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "selector": "foo",
+// CHECK-NEXT: "receiverKind": "class",
+// CHECK-NEXT: "classType": {
+// CHECK-NEXT: "qualType": "B"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
diff --git a/clang/test/AST/ast-dump-decl-stmts.cpp b/clang/test/AST/ast-dump-decl-stmts.cpp
index 613a3f9ee2bbc..76dc9736b3c4b 100644
--- a/clang/test/AST/ast-dump-decl-stmts.cpp
+++ b/clang/test/AST/ast-dump-decl-stmts.cpp
@@ -12,8 +12,8 @@ void test_func() {
int a, b, c;
// CHECK: DeclStmt 0x{{[^ ]*}} <line:[[@LINE-1]]:3, col:14>
// CHECK-NEXT: VarDecl 0x{{[^ ]*}} <col:3, col:7> col:7 a 'int'
- // CHECK-NEXT: VarDecl 0x{{[^ ]*}} <col:3, col:10> col:10 b 'int'
- // CHECK-NEXT: VarDecl 0x{{[^ ]*}} <col:3, col:13> col:13 c 'int'
+ // CHECK: VarDecl 0x{{[^ ]*}} <col:3, col:10> col:10 b 'int'
+ // CHECK: VarDecl 0x{{[^ ]*}} <col:3, col:13> col:13 c 'int'
void d(), e(int);
// CHECK: DeclStmt 0x{{[^ ]*}} <line:[[@LINE-1]]:3, col:19>
// CHECK-NEXT: FunctionDecl 0x{{[^ ]*}} parent 0x{{[^ ]*}} <col:3, col:10> col:8 d 'void ()'
@@ -27,8 +27,8 @@ void test_func() {
// FIXME: These currently do not show up as a DeclStmt.
int a, b, c;
// CHECK: VarDecl 0x{{[^ ]*}} <line:[[@LINE-1]]:1, col:5> col:5 a 'int'
-// CHECK-NEXT: VarDecl 0x{{[^ ]*}} <col:1, col:8> col:8 b 'int'
-// CHECK-NEXT: VarDecl 0x{{[^ ]*}} <col:1, col:11> col:11 c 'int'
+// CHECK: VarDecl 0x{{[^ ]*}} <col:1, col:8> col:8 b 'int'
+// CHECK: VarDecl 0x{{[^ ]*}} <col:1, col:11> col:11 c 'int'
void d(), e(int);
// CHECK: FunctionDecl 0x{{[^ ]*}} prev 0x{{[^ ]*}} <line:[[@LINE-1]]:1, col:8> col:6 d 'void ()'
// CHECK-NEXT: FunctionDecl 0x{{[^ ]*}} prev 0x{{[^ ]*}} <col:1, col:16> col:11 e 'void (int)'
diff --git a/clang/test/AST/ast-dump-decl.c b/clang/test/AST/ast-dump-decl.c
index 28b58c8eb648c..006a62b123366 100644
--- a/clang/test/AST/ast-dump-decl.c
+++ b/clang/test/AST/ast-dump-decl.c
@@ -130,14 +130,14 @@ int TestFunctionDecl(int x, enum { e } y) {
}
// CHECK: FunctionDecl{{.*}} TestFunctionDecl 'int (int, enum {{.*}})'
// CHECK-NEXT: ParmVarDecl{{.*}} x
-// CHECK-NEXT: ParmVarDecl{{.*}} y
-// CHECK-NEXT: CompoundStmt
+// CHECK: ParmVarDecl{{.*}} y
+// CHECK: CompoundStmt
// FIXME: It would be nice to 'Enum' and 'e'.
int TestFunctionDecl2(enum Enum { e } x) { return x; }
// CHECK: FunctionDecl{{.*}} TestFunctionDecl2 'int (enum {{.*}})'
// CHECK-NEXT: ParmVarDecl{{.*}} x
-// CHECK-NEXT: CompoundStmt
+// CHECK: CompoundStmt
int TestFunctionDeclProto(int x);
diff --git a/clang/test/AST/ast-dump-decl.cpp b/clang/test/AST/ast-dump-decl.cpp
index e84241cee922f..8a5ab5dd3e394 100644
--- a/clang/test/AST/ast-dump-decl.cpp
+++ b/clang/test/AST/ast-dump-decl.cpp
@@ -21,7 +21,7 @@ class testFieldDecl {
int TestFieldDeclInit = 0;
};
// CHECK: FieldDecl{{.*}} TestFieldDeclInit 'int'
-// CHECK-NEXT: IntegerLiteral
+// CHECK: IntegerLiteral
namespace testVarDeclNRVO {
class A { };
@@ -30,29 +30,35 @@ namespace testVarDeclNRVO {
return TestVarDeclNRVO;
}
}
-// CHECK: FunctionDecl{{.*}} TestFuncNRVO 'A ()'
-// CHECK-NEXT: `-CompoundStmt
-// CHECK-NEXT: |-DeclStmt
-// CHECK-NEXT: | `-VarDecl{{.*}} TestVarDeclNRVO 'A':'testVarDeclNRVO::A' nrvo callinit
-// CHECK-NEXT: | `-CXXConstructExpr
-// CHECK-NEXT: `-ReturnStmt{{.*}} nrvo_candidate(Var {{.*}} 'TestVarDeclNRVO' 'A':'testVarDeclNRVO::A')
+// CHECK: FunctionDecl 0x{{.+}} <{{.+}}, line:31:3> line:28:5 TestFuncNRVO 'A ()'
+// CHECK-NEXT: `-CompoundStmt 0x{{.+}} <col:20, line:31:3>
+// CHECK-NEXT: |-DeclStmt 0x{{.+}} <line:29:5, col:22>
+// CHECK-NEXT: | `-VarDecl 0x{{.+}} <col:5, col:7> col:7 used TestVarDeclNRVO 'A':'testVarDeclNRVO::A' nrvo callinit
+// CHECK-NEXT: | |-CXXConstructExpr 0x{{.+}} <col:7> 'A':'testVarDeclNRVO::A' 'void () noexcept'
+// CHECK-NEXT: | `-typeDetails: ElaboratedType 0x{{.+}} 'A' sugar
+// CHECK-NEXT: | `-typeDetails: RecordType 0x{{.+}} 'testVarDeclNRVO::A'
+// CHECK-NEXT: | `-CXXRecord 0x{{.+}} 'A'
+// CHECK-NEXT: `-ReturnStmt 0x{{.+}} <line:30:5, col:12> nrvo_candidate(Var 0x{{.+}} 'TestVarDeclNRVO' 'A':'testVarDeclNRVO::A')
+// CHECK-NEXT: `-CXXConstructExpr 0x{{.+}} <col:12> 'A':'testVarDeclNRVO::A' 'void (A &&) noexcept'
+// CHECK-NEXT: `-ImplicitCastExpr 0x{{.+}} <col:12> 'A':'testVarDeclNRVO::A' xvalue <NoOp>
+// CHECK-NEXT: `-DeclRefExpr 0x{{.+}} <col:12> 'A':'testVarDeclNRVO::A' lvalue Var 0x{{.+}} 'TestVarDeclNRVO' 'A':'testVarDeclNRVO::A'
void testParmVarDeclInit(int TestParmVarDeclInit = 0);
// CHECK: ParmVarDecl{{.*}} TestParmVarDeclInit 'int'
-// CHECK-NEXT: IntegerLiteral{{.*}}
+// CHECK: IntegerLiteral{{.*}}
namespace TestNamespaceDecl {
int i;
}
// CHECK: NamespaceDecl{{.*}} TestNamespaceDecl
-// CHECK-NEXT: VarDecl
+// CHECK: VarDecl
namespace TestNamespaceDecl {
int j;
}
// CHECK: NamespaceDecl{{.*}} TestNamespaceDecl
-// CHECK-NEXT: original Namespace
-// CHECK-NEXT: VarDecl
+// CHECK: original Namespace
+// CHECK: VarDecl
inline namespace TestNamespaceDeclInline {
}
@@ -83,7 +89,7 @@ namespace TestUsingDirectiveDecl {
using namespace testUsingDirectiveDecl::A;
}
// CHECK: NamespaceDecl{{.*}} TestUsingDirectiveDecl
-// CHECK-NEXT: UsingDirectiveDecl{{.*}} Namespace{{.*}} 'A'
+// CHECK: UsingDirectiveDecl{{.*}} Namespace{{.*}} 'A'
namespace testNamespaceAlias {
namespace A {
@@ -91,7 +97,7 @@ namespace testNamespaceAlias {
}
namespace TestNamespaceAlias = testNamespaceAlias::A;
// CHECK: NamespaceAliasDecl{{.*}} TestNamespaceAlias
-// CHECK-NEXT: Namespace{{.*}} 'A'
+// CHECK: Namespace{{.*}} 'A'
using TestTypeAliasDecl = int;
// CHECK: TypeAliasDecl{{.*}} TestTypeAliasDecl 'int'
@@ -101,19 +107,19 @@ namespace testTypeAliasTemplateDecl {
template<typename T> using TestTypeAliasTemplateDecl = A<T>;
}
// CHECK: TypeAliasTemplateDecl{{.*}} TestTypeAliasTemplateDecl
-// CHECK-NEXT: TemplateTypeParmDecl
-// CHECK-NEXT: TypeAliasDecl{{.*}} TestTypeAliasTemplateDecl 'A<T>'
+// CHECK: TemplateTypeParmDecl
+// CHECK: TypeAliasDecl{{.*}} TestTypeAliasTemplateDecl 'A<T>'
namespace testCXXRecordDecl {
class TestEmpty {};
// CHECK: CXXRecordDecl{{.*}} class TestEmpty
-// CHECK-NEXT: DefinitionData pass_in_registers empty aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor can_const_default_init
-// CHECK-NEXT: DefaultConstructor exists trivial constexpr
-// CHECK-NEXT: CopyConstructor simple trivial has_const_param
-// CHECK-NEXT: MoveConstructor exists simple trivial
-// CHECK-NEXT: CopyAssignment simple trivial has_const_param
-// CHECK-NEXT: MoveAssignment exists simple trivial
-// CHECK-NEXT: Destructor simple irrelevant trivial
+// CHECK: DefinitionData pass_in_registers empty aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor can_const_default_init
+// CHECK: DefaultConstructor exists trivial constexpr
+// CHECK: CopyConstructor simple trivial has_const_param
+// CHECK: MoveConstructor exists simple trivial
+// CHECK: CopyAssignment simple trivial has_const_param
+// CHECK: MoveAssignment exists simple trivial
+// CHECK: Destructor simple irrelevant trivial
class A { };
class B { };
@@ -122,24 +128,24 @@ namespace testCXXRecordDecl {
};
}
// CHECK: CXXRecordDecl{{.*}} class TestCXXRecordDecl
-// CHECK-NEXT: DefinitionData{{$}}
-// CHECK-NEXT: DefaultConstructor exists non_trivial
-// CHECK-NEXT: CopyConstructor simple non_trivial has_const_param
-// CHECK-NEXT: MoveConstructor exists simple non_trivial
-// CHECK-NEXT: CopyAssignment simple non_trivial has_const_param
-// CHECK-NEXT: MoveAssignment exists simple non_trivial
-// CHECK-NEXT: Destructor simple irrelevant trivial
-// CHECK-NEXT: virtual private 'A':'testCXXRecordDecl::A'
-// CHECK-NEXT: public 'B':'testCXXRecordDecl::B'
-// CHECK-NEXT: CXXRecordDecl{{.*}} class TestCXXRecordDecl
-// CHECK-NEXT: FieldDecl
+// CHECK: DefinitionData{{$}}
+// CHECK: DefaultConstructor exists non_trivial
+// CHECK: CopyConstructor simple non_trivial has_const_param
+// CHECK: MoveConstructor exists simple non_trivial
+// CHECK: CopyAssignment simple non_trivial has_const_param
+// CHECK: MoveAssignment exists simple non_trivial
+// CHECK: Destructor simple irrelevant trivial
+// CHECK: virtual private 'A':'testCXXRecordDecl::A'
+// CHECK: public 'B':'testCXXRecordDecl::B'
+// CHECK: CXXRecordDecl{{.*}} class TestCXXRecordDecl
+// CHECK: FieldDecl
template<class...T>
class TestCXXRecordDeclPack : public T... {
};
// CHECK: CXXRecordDecl{{.*}} class TestCXXRecordDeclPack
// CHECK: public 'T'...
-// CHECK-NEXT: CXXRecordDecl{{.*}} class TestCXXRecordDeclPack
+// CHECK: CXXRecordDecl{{.*}} class TestCXXRecordDeclPack
thread_local int TestThreadLocalInt;
// CHECK: TestThreadLocalInt {{.*}} tls_dynamic
@@ -164,23 +170,23 @@ namespace testCXXConstructorDecl {
};
}
// CHECK: CXXConstructorDecl{{.*}} TestCXXConstructorDecl 'void {{.*}}'
-// CHECK-NEXT: ParmVarDecl{{.*}} a
-// CHECK-NEXT: ParmVarDecl{{.*}} i
-// CHECK-NEXT: CXXCtorInitializer{{.*}}A
-// CHECK-NEXT: Expr
+// CHECK: ParmVarDecl{{.*}} a
+// CHECK: ParmVarDecl{{.*}} i
+// CHECK: CXXCtorInitializer{{.*}}A
+// CHECK: Expr
// CHECK: CXXCtorInitializer{{.*}}I
-// CHECK-NEXT: Expr
+// CHECK: Expr
// CHECK: CompoundStmt
// CHECK: CXXConstructorDecl{{.*}} TestCXXConstructorDecl 'void {{.*}}'
-// CHECK-NEXT: ParmVarDecl{{.*}} a
-// CHECK-NEXT: CXXCtorInitializer{{.*}}TestCXXConstructorDecl
-// CHECK-NEXT: CXXConstructExpr{{.*}}TestCXXConstructorDecl
+// CHECK: ParmVarDecl{{.*}} a
+// CHECK: CXXCtorInitializer{{.*}}TestCXXConstructorDecl
+// CHECK: CXXConstructExpr{{.*}}TestCXXConstructorDecl
class TestCXXDestructorDecl {
~TestCXXDestructorDecl() { }
};
// CHECK: CXXDestructorDecl{{.*}} ~TestCXXDestructorDecl 'void () noexcept'
-// CHECK-NEXT: CompoundStmt
+// CHECK: CompoundStmt
// Test that the range of a defaulted members is computed correctly.
class TestMemberRanges {
@@ -210,15 +216,15 @@ class TestCXXConversionDecl {
operator int() { return 0; }
};
// CHECK: CXXConversionDecl{{.*}} operator int 'int ()'
-// CHECK-NEXT: CompoundStmt
+// CHECK: CompoundStmt
namespace TestStaticAssertDecl {
static_assert(true, "msg");
}
// CHECK: NamespaceDecl{{.*}} TestStaticAssertDecl
-// CHECK-NEXT: StaticAssertDecl{{.*> .*$}}
-// CHECK-NEXT: CXXBoolLiteralExpr
-// CHECK-NEXT: StringLiteral
+// CHECK: StaticAssertDecl{{.*> .*$}}
+// CHECK: CXXBoolLiteralExpr
+// CHECK: StringLiteral
namespace testFunctionTemplateDecl {
class A { };
@@ -239,35 +245,35 @@ namespace testFunctionTemplateDecl {
// explicit instantiation definition
template void TestFunctionTemplate(D);
}
- // CHECK: FunctionTemplateDecl 0x{{.+}} <{{.+}}:[[@LINE-14]]:3, col:55> col:29 TestFunctionTemplate
- // CHECK-NEXT: |-TemplateTypeParmDecl 0x{{.+}} <col:12, col:21> col:21 referenced typename depth 0 index 0 T
- // CHECK-NEXT: |-FunctionDecl 0x{{.+}} <col:24, col:55> col:29 TestFunctionTemplate 'void (T)'
- // CHECK-NEXT: | |-ParmVarDecl 0x{{.+}} <col:50> col:51 'T'
- // CHECK-NEXT: | `-CompoundStmt 0x{{.+}} <col:53, col:55>
- // CHECK-NEXT: |-FunctionDecl 0x{{.+}} <col:24, col:55> col:29 used TestFunctionTemplate 'void (testFunctionTemplateDecl::A)'
- // CHECK-NEXT: | |-TemplateArgument type 'testFunctionTemplateDecl::A'
- // CHECK-NEXT: | | `-RecordType 0{{.+}} 'testFunctionTemplateDecl::A'
- // CHECK-NEXT: | | `-CXXRecord 0x{{.+}} 'A'
- // CHECK-NEXT: | |-ParmVarDecl 0x{{.+}} <col:50> col:51 'testFunctionTemplateDecl::A'
- // CHECK-NEXT: | `-CompoundStmt 0x{{.+}} <col:53, col:55>
- // CHECK-NEXT: |-Function 0x{{.+}} 'TestFunctionTemplate' 'void (B)'
- // CHECK-NEXT: |-FunctionDecl 0x{{.+}} <col:24, col:55> col:29 TestFunctionTemplate 'void (testFunctionTemplateDecl::C)'
- // CHECK-NEXT: | |-TemplateArgument type 'testFunctionTemplateDecl::C'
- // CHECK-NEXT: | | `-RecordType 0{{.+}} 'testFunctionTemplateDecl::C'
- // CHECK-NEXT: | | `-CXXRecord 0x{{.+}} 'C'
- // CHECK-NEXT: | `-ParmVarDecl 0x{{.+}} <col:50> col:51 'testFunctionTemplateDecl::C'
- // CHECK-NEXT: `-FunctionDecl 0x{{.+}} <col:24, col:55> col:29 TestFunctionTemplate 'void (testFunctionTemplateDecl::D)'
- // CHECK-NEXT: |-TemplateArgument type 'testFunctionTemplateDecl::D'
- // CHECK-NEXT: | `-RecordType 0{{.+}} 'testFunctionTemplateDecl::D'
- // CHECK-NEXT: | `-CXXRecord 0x{{.+}} 'D'
- // CHECK-NEXT: |-ParmVarDecl 0x{{.+}} <col:50> col:51 'testFunctionTemplateDecl::D'
- // CHECK-NEXT: `-CompoundStmt 0x{{.+}} <col:53, col:55>
-
- // CHECK: FunctionDecl 0x{{.+}} prev 0x{{.+}} <{{.+}}:[[@LINE-32]]:3, col:41> col:19 TestFunctionTemplate 'void (B)'
- // CHECK-NEXT: |-TemplateArgument type 'testFunctionTemplateDecl::B'
- // CHECK-NEXT: | `-RecordType 0{{.+}} 'testFunctionTemplateDecl::B'
- // CHECK-NEXT: | `-CXXRecord 0x{{.+}} 'B'
- // CHECK-NEXT: `-ParmVarDecl 0x{{.+}} <col:40> col:41 'B':'testFunctionTemplateDecl::B'
+ // CHECK: FunctionTemplateDecl 0x{{.+}} <{{.+}}:[[@LINE-14]]:3, col:55> col:29 TestFunctionTemplate
+ // CHECK: |-TemplateTypeParmDecl 0x{{.+}} <col:12, col:21> col:21 referenced typename depth 0 index 0 T
+ // CHECK: |-FunctionDecl 0x{{.+}} <col:24, col:55> col:29 TestFunctionTemplate 'void (T)'
+ // CHECK: | |-ParmVarDecl 0x{{.+}} <col:50> col:51 'T'
+ // CHECK: | `-CompoundStmt 0x{{.+}} <col:53, col:55>
+ // CHECK: |-FunctionDecl 0x{{.+}} <col:24, col:55> col:29 used TestFunctionTemplate 'void (testFunctionTemplateDecl::A)'
+ // CHECK: | |-TemplateArgument type 'testFunctionTemplateDecl::A'
+ // CHECK: | | `-typeDetails: RecordType 0{{.+}} 'testFunctionTemplateDecl::A'
+ // CHECK: | | `-CXXRecord 0x{{.+}} 'A'
+ // CHECK: | |-ParmVarDecl 0x{{.+}} <col:50> col:51 'testFunctionTemplateDecl::A'
+ // CHECK: | `-CompoundStmt 0x{{.+}} <col:53, col:55>
+ // CHECK: |-Function 0x{{.+}} 'TestFunctionTemplate' 'void (B)'
+ // CHECK: |-FunctionDecl 0x{{.+}} <col:24, col:55> col:29 TestFunctionTemplate 'void (testFunctionTemplateDecl::C)'
+ // CHECK: | |-TemplateArgument type 'testFunctionTemplateDecl::C'
+ // CHECK: | | `-typeDetails: RecordType 0{{.+}} 'testFunctionTemplateDecl::C'
+ // CHECK: | | `-CXXRecord 0x{{.+}} 'C'
+ // CHECK: | `-ParmVarDecl 0x{{.+}} <col:50> col:51 'testFunctionTemplateDecl::C'
+ // CHECK: `-FunctionDecl 0x{{.+}} <col:24, col:55> col:29 TestFunctionTemplate 'void (testFunctionTemplateDecl::D)'
+ // CHECK: |-TemplateArgument type 'testFunctionTemplateDecl::D'
+ // CHECK: | `-typeDetails: RecordType 0{{.+}} 'testFunctionTemplateDecl::D'
+ // CHECK: | `-CXXRecord 0x{{.+}} 'D'
+ // CHECK: |-ParmVarDecl 0x{{.+}} <col:50> col:51 'testFunctionTemplateDecl::D'
+ // CHECK: `-CompoundStmt 0x{{.+}} <col:53, col:55>
+
+ // CHECK: FunctionDecl 0x{{.+}} prev 0x{{.+}} <{{.+}}:[[@LINE-32]]:3, col:41> col:19 TestFunctionTemplate 'void (B)'
+ // CHECK: |-TemplateArgument type 'testFunctionTemplateDecl::B'
+ // CHECK: | `-typeDetails: RecordType 0{{.+}} 'testFunctionTemplateDecl::B'
+ // CHECK: | `-CXXRecord 0x{{.+}} 'B'
+ // CHECK: `-ParmVarDecl 0x{{.+}} <col:40> col:41 'B':'testFunctionTemplateDecl::B'
namespace testClassTemplateDecl {
@@ -317,174 +323,174 @@ namespace testClassTemplateDecl {
}
// CHECK: ClassTemplateDecl 0x{{.+}} <{{.+}}:[[@LINE-40]]:3, line:[[@LINE-34]]:3> line:[[@LINE-40]]:30 TestClassTemplate{{$}}
-// CHECK-NEXT: |-TemplateTypeParmDecl 0x{{.+}} <col:12, col:21> col:21 typename depth 0 index 0 T{{$}}
-// CHECK-NEXT: |-CXXRecordDecl 0x{{.+}} <col:24, line:[[@LINE-36]]:3> line:[[@LINE-42]]:30 class TestClassTemplate definition{{$}}
-// CHECK-NEXT: | |-DefinitionData standard_layout has_user_declared_ctor can_const_default_init{{$}}
-// CHECK-NEXT: | | |-DefaultConstructor exists non_trivial user_provided{{$}}
-// CHECK-NEXT: | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
-// CHECK-NEXT: | | |-MoveConstructor{{$}}
-// CHECK-NEXT: | | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
-// CHECK-NEXT: | | |-MoveAssignment{{$}}
-// CHECK-NEXT: | | `-Destructor irrelevant non_trivial user_declared{{$}}
-// CHECK-NEXT: | |-CXXRecordDecl 0x{{.+}} <col:24, col:30> col:30 implicit referenced class TestClassTemplate{{$}}
-// CHECK-NEXT: | |-AccessSpecDecl 0x{{.+}} <line:[[@LINE-50]]:3, col:9> col:3 public{{$}}
-// CHECK-NEXT: | |-CXXConstructorDecl 0x{{.+}} <line:[[@LINE-50]]:5, col:23> col:5 TestClassTemplate<T> 'void ()'{{$}}
-// CHECK-NEXT: | |-CXXDestructorDecl 0x{{.+}} <line:[[@LINE-50]]:5, col:24> col:5 ~TestClassTemplate<T> 'void ()' not_selected{{$}}
-// CHECK-NEXT: | |-CXXMethodDecl 0x{{.+}} <line:[[@LINE-50]]:5, col:11> col:9 j 'int ()'{{$}}
-// CHECK-NEXT: | `-FieldDecl 0x{{.+}} <line:[[@LINE-50]]:5, col:9> col:9 i 'int'{{$}}
-// CHECK-NEXT: |-ClassTemplateSpecializationDecl 0x{{.+}} <line:[[@LINE-56]]:3, line:[[@LINE-50]]:3> line:[[@LINE-56]]:30 class TestClassTemplate definition implicit_instantiation{{$}}
-// CHECK-NEXT: | |-DefinitionData standard_layout has_user_declared_ctor can_const_default_init{{$}}
-// CHECK-NEXT: | | |-DefaultConstructor exists non_trivial user_provided{{$}}
-// CHECK-NEXT: | | |-CopyConstructor simple trivial has_const_param implicit_has_const_param{{$}}
-// CHECK-NEXT: | | |-MoveConstructor{{$}}
-// CHECK-NEXT: | | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
-// CHECK-NEXT: | | |-MoveAssignment{{$}}
-// CHECK-NEXT: | | `-Destructor non_trivial user_declared{{$}}
-// CHECK-NEXT: | |-TemplateArgument type 'testClassTemplateDecl::A'{{$}}
-// CHECK-NEXT: | | `-RecordType 0{{.+}} 'testClassTemplateDecl::A'{{$}}
-// CHECK-NEXT: | | `-CXXRecord 0x{{.+}} 'A'{{$}}
-// CHECK-NEXT: | |-CXXRecordDecl 0x{{.+}} <col:24, col:30> col:30 implicit class TestClassTemplate{{$}}
-// CHECK-NEXT: | |-AccessSpecDecl 0x{{.+}} <line:[[@LINE-67]]:3, col:9> col:3 public{{$}}
-// CHECK-NEXT: | |-CXXConstructorDecl 0x{{.+}} <line:[[@LINE-67]]:5, col:23> col:5 used TestClassTemplate 'void ()' implicit_instantiation instantiated_from {{0x[^ ]+}}{{$}}
-// CHECK-NEXT: | |-CXXDestructorDecl 0x{{.+}} <line:[[@LINE-67]]:5, col:24> col:5 used ~TestClassTemplate 'void () noexcept' implicit_instantiation instantiated_from {{0x[^ ]+}}{{$}}
-// CHECK-NEXT: | |-CXXMethodDecl 0x{{.+}} <line:[[@LINE-67]]:5, col:11> col:9 j 'int ()' implicit_instantiation instantiated_from {{0x[^ ]+}}{{$}}
-// CHECK-NEXT: | |-FieldDecl 0x{{.+}} <line:[[@LINE-67]]:5, col:9> col:9 i 'int'{{$}}
-// CHECK-NEXT: | `-CXXConstructorDecl 0x{{.+}} <line:[[@LINE-73]]:30> col:30 implicit constexpr TestClassTemplate 'void (const TestClassTemplate<A> &)' inline default trivial noexcept-unevaluated 0x{{.+}}{{$}}
-// CHECK-NEXT: | `-ParmVarDecl 0x{{.+}} <col:30> col:30 'const TestClassTemplate<A> &'{{$}}
-// CHECK-NEXT: |-ClassTemplateSpecialization 0x{{.+}} 'TestClassTemplate'{{$}}
-// CHECK-NEXT: |-ClassTemplateSpecialization 0x{{.+}} 'TestClassTemplate'{{$}}
-// CHECK-NEXT: `-ClassTemplateSpecialization 0x{{.+}} 'TestClassTemplate'{{$}}
+// CHECK: |-TemplateTypeParmDecl 0x{{.+}} <col:12, col:21> col:21 typename depth 0 index 0 T{{$}}
+// CHECK: |-CXXRecordDecl 0x{{.+}} <col:24, line:[[@LINE-36]]:3> line:[[@LINE-42]]:30 class TestClassTemplate definition{{$}}
+// CHECK: | |-DefinitionData standard_layout has_user_declared_ctor can_const_default_init{{$}}
+// CHECK: | | |-DefaultConstructor exists non_trivial user_provided{{$}}
+// CHECK: | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
+// CHECK: | | |-MoveConstructor{{$}}
+// CHECK: | | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
+// CHECK: | | |-MoveAssignment{{$}}
+// CHECK: | | `-Destructor irrelevant non_trivial user_declared{{$}}
+// CHECK: | |-CXXRecordDecl 0x{{.+}} <col:24, col:30> col:30 implicit referenced class TestClassTemplate{{$}}
+// CHECK: | |-AccessSpecDecl 0x{{.+}} <line:[[@LINE-50]]:3, col:9> col:3 public{{$}}
+// CHECK: | |-CXXConstructorDecl 0x{{.+}} <line:[[@LINE-50]]:5, col:23> col:5 TestClassTemplate<T> 'void ()'{{$}}
+// CHECK: | |-CXXDestructorDecl 0x{{.+}} <line:[[@LINE-50]]:5, col:24> col:5 ~TestClassTemplate<T> 'void ()' not_selected{{$}}
+// CHECK: | |-CXXMethodDecl 0x{{.+}} <line:[[@LINE-50]]:5, col:11> col:9 j 'int ()'{{$}}
+// CHECK: | `-FieldDecl 0x{{.+}} <line:[[@LINE-50]]:5, col:9> col:9 i 'int'{{$}}
+// CHECK: |-ClassTemplateSpecializationDecl 0x{{.+}} <line:[[@LINE-56]]:3, line:[[@LINE-50]]:3> line:[[@LINE-56]]:30 class TestClassTemplate definition implicit_instantiation{{$}}
+// CHECK: | |-DefinitionData standard_layout has_user_declared_ctor can_const_default_init{{$}}
+// CHECK: | | |-DefaultConstructor exists non_trivial user_provided{{$}}
+// CHECK: | | |-CopyConstructor simple trivial has_const_param implicit_has_const_param{{$}}
+// CHECK: | | |-MoveConstructor{{$}}
+// CHECK: | | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
+// CHECK: | | |-MoveAssignment{{$}}
+// CHECK: | | `-Destructor non_trivial user_declared{{$}}
+// CHECK: | |-TemplateArgument type 'testClassTemplateDecl::A'{{$}}
+// CHECK: | | `-typeDetails: RecordType 0{{.+}} 'testClassTemplateDecl::A'{{$}}
+// CHECK: | | `-CXXRecord 0x{{.+}} 'A'{{$}}
+// CHECK: | |-CXXRecordDecl 0x{{.+}} <col:24, col:30> col:30 implicit class TestClassTemplate{{$}}
+// CHECK: | |-AccessSpecDecl 0x{{.+}} <line:[[@LINE-67]]:3, col:9> col:3 public{{$}}
+// CHECK: | |-CXXConstructorDecl 0x{{.+}} <line:[[@LINE-67]]:5, col:23> col:5 used TestClassTemplate 'void ()' implicit_instantiation instantiated_from {{0x[^ ]+}}{{$}}
+// CHECK: | |-CXXDestructorDecl 0x{{.+}} <line:[[@LINE-67]]:5, col:24> col:5 used ~TestClassTemplate 'void () noexcept' implicit_instantiation instantiated_from {{0x[^ ]+}}{{$}}
+// CHECK: | |-CXXMethodDecl 0x{{.+}} <line:[[@LINE-67]]:5, col:11> col:9 j 'int ()' implicit_instantiation instantiated_from {{0x[^ ]+}}{{$}}
+// CHECK: | |-FieldDecl 0x{{.+}} <line:[[@LINE-67]]:5, col:9> col:9 i 'int'{{$}}
+// CHECK: | `-CXXConstructorDecl 0x{{.+}} <line:[[@LINE-73]]:30> col:30 implicit constexpr TestClassTemplate 'void (const TestClassTemplate<A> &)' inline default trivial noexcept-unevaluated 0x{{.+}}{{$}}
+// CHECK: | `-ParmVarDecl 0x{{.+}} <col:30> col:30 'const TestClassTemplate<A> &'{{$}}
+// CHECK: |-ClassTemplateSpecialization 0x{{.+}} 'TestClassTemplate'{{$}}
+// CHECK: |-ClassTemplateSpecialization 0x{{.+}} 'TestClassTemplate'{{$}}
+// CHECK: `-ClassTemplateSpecialization 0x{{.+}} 'TestClassTemplate'{{$}}
// CHECK: ClassTemplateSpecializationDecl 0x{{.+}} <{{.+}}:[[@LINE-67]]:3, line:[[@LINE-65]]:3> line:[[@LINE-67]]:20 class TestClassTemplate definition explicit_specialization{{$}}
-// CHECK-NEXT: |-DefinitionData pass_in_registers standard_layout trivially_copyable trivial literal{{$}}
-// CHECK-NEXT: | |-DefaultConstructor exists trivial needs_implicit{{$}}
-// CHECK-NEXT: | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
-// CHECK-NEXT: | |-MoveConstructor exists simple trivial needs_implicit{{$}}
-// CHECK-NEXT: | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
-// CHECK-NEXT: | |-MoveAssignment exists simple trivial needs_implicit{{$}}
-// CHECK-NEXT: | `-Destructor simple irrelevant trivial needs_implicit{{$}}
-// CHECK-NEXT: |-TemplateArgument type 'testClassTemplateDecl::B'{{$}}
-// CHECK-NEXT: | `-RecordType 0{{.+}} 'testClassTemplateDecl::B'{{$}}
-// CHECK-NEXT: | `-CXXRecord 0x{{.+}} 'B'{{$}}
-// CHECK-NEXT: |-CXXRecordDecl 0x{{.+}} <col:14, col:20> col:20 implicit class TestClassTemplate{{$}}
-// CHECK-NEXT: `-FieldDecl 0x{{.+}} <line:[[@LINE-78]]:5, col:9> col:9 j 'int'{{$}}
+// CHECK: |-DefinitionData pass_in_registers standard_layout trivially_copyable trivial literal{{$}}
+// CHECK: | |-DefaultConstructor exists trivial needs_implicit{{$}}
+// CHECK: | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
+// CHECK: | |-MoveConstructor exists simple trivial needs_implicit{{$}}
+// CHECK: | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
+// CHECK: | |-MoveAssignment exists simple trivial needs_implicit{{$}}
+// CHECK: | `-Destructor simple irrelevant trivial needs_implicit{{$}}
+// CHECK: |-TemplateArgument type 'testClassTemplateDecl::B'{{$}}
+// CHECK: | `-typeDetails: RecordType 0{{.+}} 'testClassTemplateDecl::B'{{$}}
+// CHECK: | `-CXXRecord 0x{{.+}} 'B'{{$}}
+// CHECK: |-CXXRecordDecl 0x{{.+}} <col:14, col:20> col:20 implicit class TestClassTemplate{{$}}
+// CHECK: `-FieldDecl 0x{{.+}} <line:[[@LINE-78]]:5, col:9> col:9 j 'int'{{$}}
// CHECK: ClassTemplateSpecializationDecl 0x{{.+}} <{{.+}}:{{.*}}:3, col:44> col:25 class TestClassTemplate definition explicit_instantiation_declaration{{$}}
-// CHECK-NEXT: |-DefinitionData standard_layout has_user_declared_ctor can_const_default_init{{$}}
-// CHECK-NEXT: | |-DefaultConstructor exists non_trivial user_provided{{$}}
-// CHECK-NEXT: | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
-// CHECK-NEXT: | |-MoveConstructor{{$}}
-// CHECK-NEXT: | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
-// CHECK-NEXT: | |-MoveAssignment{{$}}
-// CHECK-NEXT: | `-Destructor non_trivial user_declared{{$}}
-// CHECK-NEXT: |-TemplateArgument type 'testClassTemplateDecl::C'{{$}}
-// CHECK-NEXT: | `-RecordType 0{{.+}} 'testClassTemplateDecl::C'{{$}}
-// CHECK-NEXT: | `-CXXRecord 0x{{.+}} 'C'{{$}}
-// CHECK-NEXT: |-CXXRecordDecl 0x{{.+}} <line:[[@LINE-104]]:24, col:30> col:30 implicit class TestClassTemplate{{$}}
-// CHECK-NEXT: |-AccessSpecDecl 0x{{.+}} <line:[[@LINE-104]]:3, col:9> col:3 public{{$}}
-// CHECK-NEXT: |-CXXConstructorDecl 0x{{.+}} <line:[[@LINE-104]]:5, col:23> col:5 TestClassTemplate 'void ()' explicit_instantiation_declaration instantiated_from {{0x[^ ]+}}{{$}}
-// CHECK-NEXT: |-CXXDestructorDecl 0x{{.+}} <line:[[@LINE-104]]:5, col:24> col:5 ~TestClassTemplate 'void ()' explicit_instantiation_declaration noexcept-unevaluated 0x{{[^ ]+}} instantiated_from {{0x[^ ]+}}
-// CHECK-NEXT: |-CXXMethodDecl 0x{{.+}} <line:[[@LINE-104]]:5, col:11> col:9 j 'int ()' explicit_instantiation_declaration instantiated_from {{0x[^ ]+}}{{$}}
-// CHECK-NEXT: `-FieldDecl 0x{{.+}} <line:[[@LINE-104]]:5, col:9> col:9 i 'int'{{$}}
+// CHECK: |-DefinitionData standard_layout has_user_declared_ctor can_const_default_init{{$}}
+// CHECK: | |-DefaultConstructor exists non_trivial user_provided{{$}}
+// CHECK: | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
+// CHECK: | |-MoveConstructor{{$}}
+// CHECK: | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
+// CHECK: | |-MoveAssignment{{$}}
+// CHECK: | `-Destructor non_trivial user_declared{{$}}
+// CHECK: |-TemplateArgument type 'testClassTemplateDecl::C'{{$}}
+// CHECK: | `-typeDetails: RecordType 0{{.+}} 'testClassTemplateDecl::C'{{$}}
+// CHECK: | `-CXXRecord 0x{{.+}} 'C'{{$}}
+// CHECK: |-CXXRecordDecl 0x{{.+}} <line:[[@LINE-104]]:24, col:30> col:30 implicit class TestClassTemplate{{$}}
+// CHECK: |-AccessSpecDecl 0x{{.+}} <line:[[@LINE-104]]:3, col:9> col:3 public{{$}}
+// CHECK: |-CXXConstructorDecl 0x{{.+}} <line:[[@LINE-104]]:5, col:23> col:5 TestClassTemplate 'void ()' explicit_instantiation_declaration instantiated_from {{0x[^ ]+}}{{$}}
+// CHECK: |-CXXDestructorDecl 0x{{.+}} <line:[[@LINE-104]]:5, col:24> col:5 ~TestClassTemplate 'void ()' explicit_instantiation_declaration noexcept-unevaluated 0x{{[^ ]+}} instantiated_from {{0x[^ ]+}}
+// CHECK: |-CXXMethodDecl 0x{{.+}} <line:[[@LINE-104]]:5, col:11> col:9 j 'int ()' explicit_instantiation_declaration instantiated_from {{0x[^ ]+}}{{$}}
+// CHECK: `-FieldDecl 0x{{.+}} <line:[[@LINE-104]]:5, col:9> col:9 i 'int'{{$}}
// CHECK: ClassTemplateSpecializationDecl 0x{{.+}} <{{.+}}:[[@LINE-91]]:3, col:37> col:18 class TestClassTemplate definition explicit_instantiation_definition{{$}}
-// CHECK-NEXT: |-DefinitionData standard_layout has_user_declared_ctor can_const_default_init{{$}}
-// CHECK-NEXT: | |-DefaultConstructor exists non_trivial user_provided{{$}}
-// CHECK-NEXT: | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
-// CHECK-NEXT: | |-MoveConstructor{{$}}
-// CHECK-NEXT: | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
-// CHECK-NEXT: | |-MoveAssignment{{$}}
-// CHECK-NEXT: | `-Destructor non_trivial user_declared{{$}}
-// CHECK-NEXT: |-TemplateArgument type 'testClassTemplateDecl::D'{{$}}
-// CHECK-NEXT: | `-RecordType 0{{.+}} 'testClassTemplateDecl::D'{{$}}
-// CHECK-NEXT: | `-CXXRecord 0x{{.+}} 'D'{{$}}
-// CHECK-NEXT: |-CXXRecordDecl 0x{{.+}} <line:[[@LINE-122]]:24, col:30> col:30 implicit class TestClassTemplate{{$}}
-// CHECK-NEXT: |-AccessSpecDecl 0x{{.+}} <line:[[@LINE-122]]:3, col:9> col:3 public{{$}}
-// CHECK-NEXT: |-CXXConstructorDecl 0x{{.+}} <line:[[@LINE-122]]:5, col:23> col:5 TestClassTemplate 'void ()' implicit_instantiation instantiated_from {{0x[^ ]+}}{{$}}
-// CHECK-NEXT: |-CXXDestructorDecl 0x{{.+}} <line:[[@LINE-122]]:5, col:24> col:5 ~TestClassTemplate 'void ()' implicit_instantiation noexcept-unevaluated 0x{{.+}} instantiated_from {{0x[^ ]+}}{{$}}
-// CHECK-NEXT: |-CXXMethodDecl 0x{{.+}} <line:[[@LINE-122]]:5, col:11> col:9 j 'int ()' implicit_instantiation instantiated_from {{0x[^ ]+}}{{$}}
-// CHECK-NEXT: `-FieldDecl 0x{{.+}} <line:[[@LINE-122]]:5, col:9> col:9 i 'int'{{$}}
+// CHECK: |-DefinitionData standard_layout has_user_declared_ctor can_const_default_init{{$}}
+// CHECK: | |-DefaultConstructor exists non_trivial user_provided{{$}}
+// CHECK: | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
+// CHECK: | |-MoveConstructor{{$}}
+// CHECK: | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
+// CHECK: | |-MoveAssignment{{$}}
+// CHECK: | `-Destructor non_trivial user_declared{{$}}
+// CHECK: |-TemplateArgument type 'testClassTemplateDecl::D'{{$}}
+// CHECK: | `-typeDetails: RecordType 0{{.+}} 'testClassTemplateDecl::D'{{$}}
+// CHECK: | `-CXXRecord 0x{{.+}} 'D'{{$}}
+// CHECK: |-CXXRecordDecl 0x{{.+}} <line:[[@LINE-122]]:24, col:30> col:30 implicit class TestClassTemplate{{$}}
+// CHECK: |-AccessSpecDecl 0x{{.+}} <line:[[@LINE-122]]:3, col:9> col:3 public{{$}}
+// CHECK: |-CXXConstructorDecl 0x{{.+}} <line:[[@LINE-122]]:5, col:23> col:5 TestClassTemplate 'void ()' implicit_instantiation instantiated_from {{0x[^ ]+}}{{$}}
+// CHECK: |-CXXDestructorDecl 0x{{.+}} <line:[[@LINE-122]]:5, col:24> col:5 ~TestClassTemplate 'void ()' implicit_instantiation noexcept-unevaluated 0x{{.+}} instantiated_from {{0x[^ ]+}}{{$}}
+// CHECK: |-CXXMethodDecl 0x{{.+}} <line:[[@LINE-122]]:5, col:11> col:9 j 'int ()' implicit_instantiation instantiated_from {{0x[^ ]+}}{{$}}
+// CHECK: `-FieldDecl 0x{{.+}} <line:[[@LINE-122]]:5, col:9> col:9 i 'int'{{$}}
// CHECK: ClassTemplateDecl 0x{{.+}} <{{.+}}:[[@LINE-106]]:3, line:[[@LINE-104]]:3> line:[[@LINE-106]]:44 TestClassTemplatePartial{{$}}
-// CHECK-NEXT: |-TemplateTypeParmDecl 0x{{.+}} <col:12, col:21> col:21 typename depth 0 index 0 T1{{$}}
-// CHECK-NEXT: |-TemplateTypeParmDecl 0x{{.+}} <col:25, col:34> col:34 typename depth 0 index 1 T2{{$}}
-// CHECK-NEXT: `-CXXRecordDecl 0x{{.+}} <col:38, line:[[@LINE-107]]:3> line:[[@LINE-109]]:44 class TestClassTemplatePartial definition{{$}}
-// CHECK-NEXT: |-DefinitionData standard_layout trivially_copyable trivial literal{{$}}
-// CHECK-NEXT: | |-DefaultConstructor exists trivial needs_implicit{{$}}
-// CHECK-NEXT: | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
-// CHECK-NEXT: | |-MoveConstructor exists simple trivial needs_implicit{{$}}
-// CHECK-NEXT: | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
-// CHECK-NEXT: | |-MoveAssignment exists simple trivial needs_implicit{{$}}
-// CHECK-NEXT: | `-Destructor simple irrelevant trivial needs_implicit{{$}}
-// CHECK-NEXT: |-CXXRecordDecl 0x{{.+}} <col:38, col:44> col:44 implicit class TestClassTemplatePartial{{$}}
-// CHECK-NEXT: `-FieldDecl 0x{{.+}} <line:[[@LINE-117]]:5, col:9> col:9 i 'int'{{$}}
+// CHECK: |-TemplateTypeParmDecl 0x{{.+}} <col:12, col:21> col:21 typename depth 0 index 0 T1{{$}}
+// CHECK: |-TemplateTypeParmDecl 0x{{.+}} <col:25, col:34> col:34 typename depth 0 index 1 T2{{$}}
+// CHECK: `-CXXRecordDecl 0x{{.+}} <col:38, line:[[@LINE-107]]:3> line:[[@LINE-109]]:44 class TestClassTemplatePartial definition{{$}}
+// CHECK: |-DefinitionData standard_layout trivially_copyable trivial literal{{$}}
+// CHECK: | |-DefaultConstructor exists trivial needs_implicit{{$}}
+// CHECK: | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
+// CHECK: | |-MoveConstructor exists simple trivial needs_implicit{{$}}
+// CHECK: | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
+// CHECK: | |-MoveAssignment exists simple trivial needs_implicit{{$}}
+// CHECK: | `-Destructor simple irrelevant trivial needs_implicit{{$}}
+// CHECK: |-CXXRecordDecl 0x{{.+}} <col:38, col:44> col:44 implicit class TestClassTemplatePartial{{$}}
+// CHECK: `-FieldDecl 0x{{.+}} <line:[[@LINE-117]]:5, col:9> col:9 i 'int'{{$}}
// CHECK: ClassTemplatePartialSpecializationDecl 0x{{.+}} <{{.+}}:[[@LINE-117]]:3, line:[[@LINE-115]]:3> line:[[@LINE-117]]:31 class TestClassTemplatePartial definition explicit_specialization{{$}}
-// CHECK-NEXT: |-DefinitionData standard_layout trivially_copyable trivial literal{{$}}
-// CHECK-NEXT: | |-DefaultConstructor exists trivial needs_implicit{{$}}
-// CHECK-NEXT: | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
-// CHECK-NEXT: | |-MoveConstructor exists simple trivial needs_implicit{{$}}
-// CHECK-NEXT: | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
-// CHECK-NEXT: | |-MoveAssignment exists simple trivial needs_implicit{{$}}
-// CHECK-NEXT: | `-Destructor simple irrelevant trivial needs_implicit{{$}}
-// CHECK-NEXT: |-TemplateArgument type 'type-parameter-0-0'{{$}}
-// CHECK-NEXT: | `-TemplateTypeParmType 0x{{.+}} 'type-parameter-0-0' dependent depth 0 index 0{{$}}
-// CHECK-NEXT: |-TemplateArgument type 'testClassTemplateDecl::A'{{$}}
-// CHECK-NEXT: | `-RecordType 0x{{.+}} 'testClassTemplateDecl::A'{{$}}
-// CHECK-NEXT: | `-CXXRecord 0x{{.+}} 'A'{{$}}
-// CHECK-NEXT: |-TemplateTypeParmDecl 0x{{.+}} <col:12, col:21> col:21 referenced typename depth 0 index 0 T1{{$}}
-// CHECK-NEXT: |-CXXRecordDecl 0x{{.+}} <col:25, col:31> col:31 implicit class TestClassTemplatePartial{{$}}
-// CHECK-NEXT: `-FieldDecl 0x{{.+}} <line:[[@LINE-131]]:5, col:9> col:9 j 'int'{{$}}
+// CHECK: |-DefinitionData standard_layout trivially_copyable trivial literal{{$}}
+// CHECK: | |-DefaultConstructor exists trivial needs_implicit{{$}}
+// CHECK: | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
+// CHECK: | |-MoveConstructor exists simple trivial needs_implicit{{$}}
+// CHECK: | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
+// CHECK: | |-MoveAssignment exists simple trivial needs_implicit{{$}}
+// CHECK: | `-Destructor simple irrelevant trivial needs_implicit{{$}}
+// CHECK: |-TemplateArgument type 'type-parameter-0-0'{{$}}
+// CHECK: | `-typeDetails: TemplateTypeParmType 0x{{.+}} 'type-parameter-0-0' dependent depth 0 index 0{{$}}
+// CHECK: |-TemplateArgument type 'testClassTemplateDecl::A'{{$}}
+// CHECK: | `-typeDetails: RecordType 0x{{.+}} 'testClassTemplateDecl::A'{{$}}
+// CHECK: | `-CXXRecord 0x{{.+}} 'A'{{$}}
+// CHECK: |-TemplateTypeParmDecl 0x{{.+}} <col:12, col:21> col:21 referenced typename depth 0 index 0 T1{{$}}
+// CHECK: |-CXXRecordDecl 0x{{.+}} <col:25, col:31> col:31 implicit class TestClassTemplatePartial{{$}}
+// CHECK: `-FieldDecl 0x{{.+}} <line:[[@LINE-131]]:5, col:9> col:9 j 'int'{{$}}
// CHECK: ClassTemplateDecl 0x{{.+}} <{{.+}}:[[@LINE-130]]:3, col:37> col:37 TestTemplateDefaultType{{$}}
-// CHECK-NEXT: |-TemplateTypeParmDecl 0x{{.+}} <col:12, col:25> col:21 typename depth 0 index 0 T{{$}}
-// CHECK-NEXT: | `-TemplateArgument type 'int'{{$}}
-// CHECK-NEXT: | `-BuiltinType 0x{{.+}} 'int'{{$}}
-// CHECK-NEXT: `-CXXRecordDecl 0x{{.+}} <col:30, col:37> col:37 struct TestTemplateDefaultType{{$}}
+// CHECK: |-TemplateTypeParmDecl 0x{{.+}} <col:12, col:25> col:21 typename depth 0 index 0 T{{$}}
+// CHECK: | `-TemplateArgument type 'int'{{$}}
+// CHECK: | `-typeDetails: BuiltinType 0x{{.+}} 'int'{{$}}
+// CHECK: `-CXXRecordDecl 0x{{.+}} <col:30, col:37> col:37 struct TestTemplateDefaultType{{$}}
// CHECK: ClassTemplateDecl 0x{{.+}} prev 0x{{.+}} <{{.+}}:[[@LINE-135]]:3, col:57> col:31 TestTemplateDefaultType{{$}}
-// CHECK-NEXT: |-TemplateTypeParmDecl 0x{{.+}} <col:12, col:21> col:21 typename depth 0 index 0 T{{$}}
-// CHECK-NEXT: | `-TemplateArgument type 'int'{{$}}
-// CHECK-NEXT: | |-inherited from TemplateTypeParm 0x{{.+}} 'T'{{$}}
-// CHECK-NEXT: | `-BuiltinType 0x{{.+}} 'int'{{$}}
-// CHECK-NEXT: `-CXXRecordDecl 0x{{.+}} prev 0x{{.+}} <col:24, col:57> col:31 struct TestTemplateDefaultType definition{{$}}
-// CHECK-NEXT: |-DefinitionData empty aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor can_const_default_init{{$}}
-// CHECK-NEXT: | |-DefaultConstructor exists trivial constexpr needs_implicit defaulted_is_constexpr{{$}}
-// CHECK-NEXT: | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
-// CHECK-NEXT: | |-MoveConstructor exists simple trivial needs_implicit{{$}}
-// CHECK-NEXT: | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
-// CHECK-NEXT: | |-MoveAssignment exists simple trivial needs_implicit{{$}}
-// CHECK-NEXT: | `-Destructor simple irrelevant trivial needs_implicit{{$}}
-// CHECK-NEXT: `-CXXRecordDecl 0x{{.+}} <col:24, col:31> col:31 implicit struct TestTemplateDefaultType{{$}}
+// CHECK: |-TemplateTypeParmDecl 0x{{.+}} <col:12, col:21> col:21 typename depth 0 index 0 T{{$}}
+// CHECK: | `-TemplateArgument type 'int'{{$}}
+// CHECK: | |-inherited from TemplateTypeParm 0x{{.+}} 'T'{{$}}
+// CHECK: | `-typeDetails: BuiltinType 0x{{.+}} 'int'{{$}}
+// CHECK: `-CXXRecordDecl 0x{{.+}} prev 0x{{.+}} <col:24, col:57> col:31 struct TestTemplateDefaultType definition{{$}}
+// CHECK: |-DefinitionData empty aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor can_const_default_init{{$}}
+// CHECK: | |-DefaultConstructor exists trivial constexpr needs_implicit defaulted_is_constexpr{{$}}
+// CHECK: | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
+// CHECK: | |-MoveConstructor exists simple trivial needs_implicit{{$}}
+// CHECK: | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
+// CHECK: | |-MoveAssignment exists simple trivial needs_implicit{{$}}
+// CHECK: | `-Destructor simple irrelevant trivial needs_implicit{{$}}
+// CHECK: `-CXXRecordDecl 0x{{.+}} <col:24, col:31> col:31 implicit struct TestTemplateDefaultType{{$}}
// CHECK: ClassTemplateDecl 0x{{.+}} <{{.+}}:[[@LINE-148]]:3, col:31> col:31 TestTemplateDefaultNonType{{$}}
-// CHECK-NEXT: |-NonTypeTemplateParmDecl 0x{{.+}} <col:12, col:20> col:16 'int' depth 0 index 0 I{{$}}
-// CHECK-NEXT: | `-TemplateArgument <col:20> expr '42'{{$}}
-// CHECK-NEXT: | `-IntegerLiteral 0x{{.+}} <col:20> 'int' 42{{$}}
-// CHECK-NEXT: `-CXXRecordDecl 0x{{.+}} <col:24, col:31> col:31 struct TestTemplateDefaultNonType{{$}}
+// CHECK: |-NonTypeTemplateParmDecl 0x{{.+}} <col:12, col:20> col:16 'int' depth 0 index 0 I{{$}}
+// CHECK: | `-TemplateArgument <col:20> expr '42'{{$}}
+// CHECK: | `-IntegerLiteral 0x{{.+}} <col:20> 'int' 42{{$}}
+// CHECK: `-CXXRecordDecl 0x{{.+}} <col:24, col:31> col:31 struct TestTemplateDefaultNonType{{$}}
// CHECK: ClassTemplateDecl 0x{{.+}} <{{.+}}:{{.*}}:3, col:68> col:68 TestTemplateTemplateDefaultType{{$}}
-// CHECK-NEXT: |-TemplateTemplateParmDecl 0x{{.+}} <col:12, col:42> col:37 depth 0 index 0 TT{{$}}
-// CHECK-NEXT: | |-TemplateTypeParmDecl 0x{{.+}} <col:21> col:29 typename depth 1 index 0{{$}}
-// CHECK-NEXT: | `-TemplateArgument <col:42> template 'TestClassTemplate':'testClassTemplateDecl::TestClassTemplate' qualified{{$}}
-// CHECK-NEXT: | `-ClassTemplateDecl 0x{{.+}} <line:{{.+}}:3, line:{{.+}}:3> line:{{.+}}:30 TestClassTemplate{{$}}
-// CHECK-NEXT: `-CXXRecordDecl 0x{{.+}} <line:{{.*}}:61, col:68> col:68 struct TestTemplateTemplateDefaultType{{$}}
+// CHECK: |-TemplateTemplateParmDecl 0x{{.+}} <col:12, col:42> col:37 depth 0 index 0 TT{{$}}
+// CHECK: | |-TemplateTypeParmDecl 0x{{.+}} <col:21> col:29 typename depth 1 index 0{{$}}
+// CHECK: | `-TemplateArgument <col:42> template 'TestClassTemplate':'testClassTemplateDecl::TestClassTemplate' qualified{{$}}
+// CHECK: | `-ClassTemplateDecl 0x{{.+}} <line:{{.+}}:3, line:{{.+}}:3> line:{{.+}}:30 TestClassTemplate{{$}}
+// CHECK: `-CXXRecordDecl 0x{{.+}} <line:{{.*}}:61, col:68> col:68 struct TestTemplateTemplateDefaultType{{$}}
// CHECK: ClassTemplateDecl 0x{{.+}} prev 0x{{.+}} <{{.+}}:{{.*}}:3, col:82> col:48 TestTemplateTemplateDefaultType{{$}}
-// CHECK-NEXT: |-TemplateTemplateParmDecl 0x{{.+}} <col:12, col:37> col:37 depth 0 index 0 TT{{$}}
-// CHECK-NEXT: | |-TemplateTypeParmDecl 0x{{.+}} <col:21> col:29 typename depth 1 index 0{{$}}
-// CHECK-NEXT: | `-TemplateArgument <line:{{.*}}:42> template 'TestClassTemplate':'testClassTemplateDecl::TestClassTemplate' qualified{{$}}
-// CHECK-NEXT: | |-inherited from TemplateTemplateParm 0x{{.+}} 'TT'{{$}}
-// CHECK-NEXT: | `-ClassTemplateDecl 0x{{.+}} <line:{{.+}}:3, line:{{.+}}:3> line:{{.+}}:30 TestClassTemplate
-// CHECK-NEXT: `-CXXRecordDecl 0x{{.+}} prev 0x{{.+}} <line:{{.*}}:41, col:82> col:48 struct TestTemplateTemplateDefaultType definition{{$}}
-// CHECK-NEXT: |-DefinitionData empty aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor can_const_default_init{{$}}
-// CHECK-NEXT: | |-DefaultConstructor exists trivial constexpr needs_implicit defaulted_is_constexpr{{$}}
-// CHECK-NEXT: | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
-// CHECK-NEXT: | |-MoveConstructor exists simple trivial needs_implicit{{$}}
-// CHECK-NEXT: | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
-// CHECK-NEXT: | |-MoveAssignment exists simple trivial needs_implicit{{$}}
-// CHECK-NEXT: | `-Destructor simple irrelevant trivial needs_implicit{{$}}
-// CHECK-NEXT: `-CXXRecordDecl 0x{{.+}} <col:41, col:48> col:48 implicit struct TestTemplateTemplateDefaultType{{$}}
+// CHECK: |-TemplateTemplateParmDecl 0x{{.+}} <col:12, col:37> col:37 depth 0 index 0 TT{{$}}
+// CHECK: | |-TemplateTypeParmDecl 0x{{.+}} <col:21> col:29 typename depth 1 index 0{{$}}
+// CHECK: | `-TemplateArgument <line:{{.*}}:42> template 'TestClassTemplate':'testClassTemplateDecl::TestClassTemplate' qualified{{$}}
+// CHECK: | |-inherited from TemplateTemplateParm 0x{{.+}} 'TT'{{$}}
+// CHECK: | `-ClassTemplateDecl 0x{{.+}} <line:{{.+}}:3, line:{{.+}}:3> line:{{.+}}:30 TestClassTemplate
+// CHECK: `-CXXRecordDecl 0x{{.+}} prev 0x{{.+}} <line:{{.*}}:41, col:82> col:48 struct TestTemplateTemplateDefaultType definition{{$}}
+// CHECK: |-DefinitionData empty aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor can_const_default_init{{$}}
+// CHECK: | |-DefaultConstructor exists trivial constexpr needs_implicit defaulted_is_constexpr{{$}}
+// CHECK: | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
+// CHECK: | |-MoveConstructor exists simple trivial needs_implicit{{$}}
+// CHECK: | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
+// CHECK: | |-MoveAssignment exists simple trivial needs_implicit{{$}}
+// CHECK: | `-Destructor simple irrelevant trivial needs_implicit{{$}}
+// CHECK: `-CXXRecordDecl 0x{{.+}} <col:41, col:48> col:48 implicit struct TestTemplateTemplateDefaultType{{$}}
// PR15220 dump instantiation only once
@@ -495,20 +501,20 @@ namespace testCanonicalTemplate {
template<typename T> void TestFunctionTemplate(T);
void bar(A a) { TestFunctionTemplate(a); }
// CHECK: FunctionTemplateDecl 0x{{.+}} <{{.+}}:[[@LINE-3]]:3, col:51> col:29 TestFunctionTemplate{{$}}
- // CHECK-NEXT: |-TemplateTypeParmDecl 0x{{.+}} <col:12, col:21> col:21 referenced typename depth 0 index 0 T{{$}}
- // CHECK-NEXT: |-FunctionDecl 0x{{.*}} <col:24, col:51> col:29 TestFunctionTemplate 'void (T)'{{$}}
- // CHECK-NEXT: | `-ParmVarDecl 0x{{.*}} <col:50> col:51 'T'{{$}}
- // CHECK-NEXT: `-FunctionDecl 0x{{.*}} <line:[[@LINE-6]]:24, col:51> col:29 used TestFunctionTemplate 'void (testCanonicalTemplate::A)' implicit_instantiation{{$}}
- // CHECK-NEXT: |-TemplateArgument type 'testCanonicalTemplate::A'{{$}}
- // CHECK-NEXT: | `-RecordType 0x{{.+}} 'testCanonicalTemplate::A'{{$}}
- // CHECK-NEXT: | `-CXXRecord 0x{{.+}} 'A'{{$}}
- // CHECK-NEXT: `-ParmVarDecl 0x{{.*}} <col:50> col:51 'testCanonicalTemplate::A'{{$}}
+ // CHECK: |-TemplateTypeParmDecl 0x{{.+}} <col:12, col:21> col:21 referenced typename depth 0 index 0 T{{$}}
+ // CHECK: |-FunctionDecl 0x{{.*}} <col:24, col:51> col:29 TestFunctionTemplate 'void (T)'{{$}}
+ // CHECK: | `-ParmVarDecl 0x{{.*}} <col:50> col:51 'T'{{$}}
+ // CHECK: `-FunctionDecl 0x{{.*}} <line:[[@LINE-6]]:24, col:51> col:29 used TestFunctionTemplate 'void (testCanonicalTemplate::A)' implicit_instantiation{{$}}
+ // CHECK: |-TemplateArgument type 'testCanonicalTemplate::A'{{$}}
+ // CHECK: | `-typeDetails: RecordType 0x{{.+}} 'testCanonicalTemplate::A'{{$}}
+ // CHECK: | `-CXXRecord 0x{{.+}} 'A'{{$}}
+ // CHECK: `-ParmVarDecl 0x{{.*}} <col:50> col:51 'testCanonicalTemplate::A'{{$}}
// CHECK: FunctionTemplateDecl 0x{{.+}} prev 0x{{.+}} <{{.+}}:[[@LINE-12]]:3, col:51> col:29 TestFunctionTemplate{{$}}
- // CHECK-NEXT: |-TemplateTypeParmDecl 0x{{.+}} <col:12, col:21> col:21 referenced typename depth 0 index 0 T{{$}}
- // CHECK-NEXT: |-FunctionDecl{{.*}} 0x{{.+}} prev 0x{{.+}} <col:24, col:51> col:29 TestFunctionTemplate 'void (T)'{{$}}
- // CHECK-NEXT: | `-ParmVarDecl 0x{{.+}} <col:50> col:51 'T'{{$}}
- // CHECK-NEXT: `-Function 0x{{.+}} 'TestFunctionTemplate' 'void (testCanonicalTemplate::A)'{{$}}
+ // CHECK: |-TemplateTypeParmDecl 0x{{.+}} <col:12, col:21> col:21 referenced typename depth 0 index 0 T{{$}}
+ // CHECK: |-FunctionDecl{{.*}} 0x{{.+}} prev 0x{{.+}} <col:24, col:51> col:29 TestFunctionTemplate 'void (T)'{{$}}
+ // CHECK: | `-ParmVarDecl 0x{{.+}} <col:50> col:51 'T'{{$}}
+ // CHECK: `-Function 0x{{.+}} 'TestFunctionTemplate' 'void (testCanonicalTemplate::A)'{{$}}
// CHECK-NOT: TemplateArgument{{$}}
template<typename T1> class TestClassTemplate {
@@ -516,43 +522,43 @@ namespace testCanonicalTemplate {
};
TestClassTemplate<A> a;
// CHECK: ClassTemplateDecl 0x{{.+}} <{{.+}}:[[@LINE-4]]:3, line:[[@LINE-2]]:3> line:[[@LINE-4]]:31 TestClassTemplate{{$}}
- // CHECK-NEXT: |-TemplateTypeParmDecl 0x{{.+}} <col:12, col:21> col:21 typename depth 0 index 0 T1{{$}}
- // CHECK-NEXT: |-CXXRecordDecl 0x{{.+}} <col:25, line:[[@LINE-4]]:3> line:[[@LINE-6]]:31 class TestClassTemplate definition{{$}}
- // CHECK-NEXT: | |-DefinitionData empty aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor can_const_default_init{{$}}
- // CHECK-NEXT: | | |-DefaultConstructor exists trivial constexpr needs_implicit defaulted_is_constexpr{{$}}
- // CHECK-NEXT: | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
- // CHECK-NEXT: | | |-MoveConstructor exists simple trivial needs_implicit{{$}}
- // CHECK-NEXT: | | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
- // CHECK-NEXT: | | |-MoveAssignment exists simple trivial needs_implicit{{$}}
- // CHECK-NEXT: | | `-Destructor simple irrelevant trivial needs_implicit{{$}}
- // CHECK-NEXT: | |-CXXRecordDecl 0x{{.+}} <col:25, col:31> col:31 implicit class TestClassTemplate{{$}}
- // CHECK-NEXT: | `-FriendDecl 0x{{.+}} <line:[[@LINE-14]]:5, col:40> col:40{{$}}
- // CHECK-NEXT: | `-ClassTemplateDecl 0x{{.+}} parent 0x{{.+}} <col:5, col:40> col:40 friend_undeclared TestClassTemplate{{$}}
- // CHECK-NEXT: | |-TemplateTypeParmDecl 0x{{.+}} <col:14, col:23> col:23 typename depth 1 index 0 T2{{$}}
- // CHECK-NEXT: | `-CXXRecordDecl 0x{{.+}} parent 0x{{.+}} <col:34, col:40> col:40 class TestClassTemplate{{$}}
- // CHECK-NEXT: `-ClassTemplateSpecializationDecl 0x{{.+}} <line:[[@LINE-19]]:3, line:[[@LINE-17]]:3> line:[[@LINE-19]]:31 class TestClassTemplate definition implicit_instantiation{{$}}
- // CHECK-NEXT: |-DefinitionData pass_in_registers empty aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor can_const_default_init{{$}}
- // CHECK-NEXT: | |-DefaultConstructor exists trivial constexpr defaulted_is_constexpr{{$}}
- // CHECK-NEXT: | |-CopyConstructor simple trivial has_const_param implicit_has_const_param{{$}}
- // CHECK-NEXT: | |-MoveConstructor exists simple trivial{{$}}
- // CHECK-NEXT: | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
- // CHECK-NEXT: | |-MoveAssignment exists simple trivial needs_implicit{{$}}
- // CHECK-NEXT: | `-Destructor simple irrelevant trivial needs_implicit{{$}}
- // CHECK-NEXT: |-TemplateArgument type 'testCanonicalTemplate::A'{{$}}
- // CHECK-NEXT: | `-RecordType 0x{{.+}} 'testCanonicalTemplate::A'{{$}}
- // CHECK-NEXT: | `-CXXRecord 0x{{.+}} 'A'{{$}}
- // CHECK-NEXT: |-CXXRecordDecl 0x{{.+}} <col:25, col:31> col:31 implicit class TestClassTemplate{{$}}
- // CHECK-NEXT: |-FriendDecl 0x{{.+}} <line:[[@LINE-30]]:5, col:40> col:40{{$}}
- // CHECK-NEXT: | `-ClassTemplateDecl 0x{{.+}} parent 0x{{.+}} prev 0x{{.+}} <col:5, col:40> col:40 friend TestClassTemplate{{$}}
- // CHECK-NEXT: | |-TemplateTypeParmDecl 0x{{.+}} <col:14, col:23> col:23 typename depth 0 index 0 T2{{$}}
- // CHECK-NEXT: | |-CXXRecordDecl 0x{{.+}} parent 0x{{.+}} prev 0x{{.+}} <col:34, col:40> col:40 class TestClassTemplate{{$}}
- // CHECK-NEXT: | `-ClassTemplateSpecialization 0x{{.+}} 'TestClassTemplate'{{$}}
- // CHECK-NEXT: |-CXXConstructorDecl 0x{{.+}} <line:[[@LINE-36]]:31> col:31 implicit used constexpr TestClassTemplate 'void () noexcept' inline default trivial{{$}}
- // CHECK-NEXT: | `-CompoundStmt 0x{{.+}} <col:31>{{$}}
- // CHECK-NEXT: |-CXXConstructorDecl 0x{{.+}} <col:31> col:31 implicit constexpr TestClassTemplate 'void (const TestClassTemplate<A> &)' inline default trivial noexcept-unevaluated 0x{{.+}}{{$}}
- // CHECK-NEXT: | `-ParmVarDecl 0x{{.+}} <col:31> col:31 'const TestClassTemplate<A> &'{{$}}
- // CHECK-NEXT: `-CXXConstructorDecl 0x{{.+}} <col:31> col:31 implicit constexpr TestClassTemplate 'void (TestClassTemplate<A> &&)' inline default trivial noexcept-unevaluated 0x{{.+}}{{$}}
- // CHECK-NEXT: `-ParmVarDecl 0x{{.+}} <col:31> col:31 'TestClassTemplate<A> &&'{{$}}
+ // CHECK: |-TemplateTypeParmDecl 0x{{.+}} <col:12, col:21> col:21 typename depth 0 index 0 T1{{$}}
+ // CHECK: |-CXXRecordDecl 0x{{.+}} <col:25, line:[[@LINE-4]]:3> line:[[@LINE-6]]:31 class TestClassTemplate definition{{$}}
+ // CHECK: | |-DefinitionData empty aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor can_const_default_init{{$}}
+ // CHECK: | | |-DefaultConstructor exists trivial constexpr needs_implicit defaulted_is_constexpr{{$}}
+ // CHECK: | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
+ // CHECK: | | |-MoveConstructor exists simple trivial needs_implicit{{$}}
+ // CHECK: | | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
+ // CHECK: | | |-MoveAssignment exists simple trivial needs_implicit{{$}}
+ // CHECK: | | `-Destructor simple irrelevant trivial needs_implicit{{$}}
+ // CHECK: | |-CXXRecordDecl 0x{{.+}} <col:25, col:31> col:31 implicit class TestClassTemplate{{$}}
+ // CHECK: | `-FriendDecl 0x{{.+}} <line:[[@LINE-14]]:5, col:40> col:40{{$}}
+ // CHECK: | `-ClassTemplateDecl 0x{{.+}} parent 0x{{.+}} <col:5, col:40> col:40 friend_undeclared TestClassTemplate{{$}}
+ // CHECK: | |-TemplateTypeParmDecl 0x{{.+}} <col:14, col:23> col:23 typename depth 1 index 0 T2{{$}}
+ // CHECK: | `-CXXRecordDecl 0x{{.+}} parent 0x{{.+}} <col:34, col:40> col:40 class TestClassTemplate{{$}}
+ // CHECK: `-ClassTemplateSpecializationDecl 0x{{.+}} <line:[[@LINE-19]]:3, line:[[@LINE-17]]:3> line:[[@LINE-19]]:31 class TestClassTemplate definition implicit_instantiation{{$}}
+ // CHECK: |-DefinitionData pass_in_registers empty aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor can_const_default_init{{$}}
+ // CHECK: | |-DefaultConstructor exists trivial constexpr defaulted_is_constexpr{{$}}
+ // CHECK: | |-CopyConstructor simple trivial has_const_param implicit_has_const_param{{$}}
+ // CHECK: | |-MoveConstructor exists simple trivial{{$}}
+ // CHECK: | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
+ // CHECK: | |-MoveAssignment exists simple trivial needs_implicit{{$}}
+ // CHECK: | `-Destructor simple irrelevant trivial needs_implicit{{$}}
+ // CHECK: |-TemplateArgument type 'testCanonicalTemplate::A'{{$}}
+ // CHECK: | `-typeDetails: RecordType 0x{{.+}} 'testCanonicalTemplate::A'{{$}}
+ // CHECK: | `-CXXRecord 0x{{.+}} 'A'{{$}}
+ // CHECK: |-CXXRecordDecl 0x{{.+}} <col:25, col:31> col:31 implicit class TestClassTemplate{{$}}
+ // CHECK: |-FriendDecl 0x{{.+}} <line:[[@LINE-30]]:5, col:40> col:40{{$}}
+ // CHECK: | `-ClassTemplateDecl 0x{{.+}} parent 0x{{.+}} prev 0x{{.+}} <col:5, col:40> col:40 friend TestClassTemplate{{$}}
+ // CHECK: | |-TemplateTypeParmDecl 0x{{.+}} <col:14, col:23> col:23 typename depth 0 index 0 T2{{$}}
+ // CHECK: | |-CXXRecordDecl 0x{{.+}} parent 0x{{.+}} prev 0x{{.+}} <col:34, col:40> col:40 class TestClassTemplate{{$}}
+ // CHECK: | `-ClassTemplateSpecialization 0x{{.+}} 'TestClassTemplate'{{$}}
+ // CHECK: |-CXXConstructorDecl 0x{{.+}} <line:[[@LINE-36]]:31> col:31 implicit used constexpr TestClassTemplate 'void () noexcept' inline default trivial{{$}}
+ // CHECK: | `-CompoundStmt 0x{{.+}} <col:31>{{$}}
+ // CHECK: |-CXXConstructorDecl 0x{{.+}} <col:31> col:31 implicit constexpr TestClassTemplate 'void (const TestClassTemplate<A> &)' inline default trivial noexcept-unevaluated 0x{{.+}}{{$}}
+ // CHECK: | `-ParmVarDecl 0x{{.+}} <col:31> col:31 'const TestClassTemplate<A> &'{{$}}
+ // CHECK: `-CXXConstructorDecl 0x{{.+}} <col:31> col:31 implicit constexpr TestClassTemplate 'void (TestClassTemplate<A> &&)' inline default trivial noexcept-unevaluated 0x{{.+}}{{$}}
+ // CHECK: `-ParmVarDecl 0x{{.+}} <col:31> col:31 'TestClassTemplate<A> &&'{{$}}
template<typename T1> class TestClassTemplate2;
@@ -561,44 +567,44 @@ namespace testCanonicalTemplate {
};
TestClassTemplate2<A> a2;
// CHECK: ClassTemplateDecl 0x{{.+}} <{{.+}}:[[@LINE-5]]:3, col:31> col:31 TestClassTemplate2{{$}}
- // CHECK-NEXT: |-TemplateTypeParmDecl 0x{{.+}} <col:12, col:21> col:21 typename depth 0 index 0 T1{{$}}
- // CHECK-NEXT: |-CXXRecordDecl 0x{{.+}} <col:25, col:31> col:31 class TestClassTemplate2{{$}}
- // CHECK-NEXT: `-ClassTemplateSpecializationDecl 0x{{.+}} <line:[[@LINE-6]]:3, line:[[@LINE-5]]:3> line:[[@LINE-6]]:31 class TestClassTemplate2 definition implicit_instantiation{{$}}
- // CHECK-NEXT: |-DefinitionData pass_in_registers empty aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor can_const_default_init{{$}}
- // CHECK-NEXT: | |-DefaultConstructor exists trivial constexpr defaulted_is_constexpr{{$}}
- // CHECK-NEXT: | |-CopyConstructor simple trivial has_const_param implicit_has_const_param{{$}}
- // CHECK-NEXT: | |-MoveConstructor exists simple trivial{{$}}
- // CHECK-NEXT: | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
- // CHECK-NEXT: | |-MoveAssignment exists simple trivial needs_implicit{{$}}
- // CHECK-NEXT: | `-Destructor simple irrelevant trivial needs_implicit{{$}}
- // CHECK-NEXT: |-TemplateArgument type 'testCanonicalTemplate::A'{{$}}
- // CHECK-NEXT: | `-RecordType 0x{{.+}} 'testCanonicalTemplate::A'{{$}}
- // CHECK-NEXT: | `-CXXRecord 0x{{.+}} 'A'{{$}}
- // CHECK-NEXT: |-CXXRecordDecl 0x{{.+}} <col:25, col:31> col:31 implicit class TestClassTemplate2{{$}}
- // CHECK-NEXT: |-CXXConstructorDecl 0x{{.+}} <col:31> col:31 implicit used constexpr TestClassTemplate2 'void () noexcept' inline default trivial{{$}}
- // CHECK-NEXT: | `-CompoundStmt 0x{{.+}} <col:31>{{$}}
- // CHECK-NEXT: |-CXXConstructorDecl 0x{{.+}} <col:31> col:31 implicit constexpr TestClassTemplate2 'void (const TestClassTemplate2<A> &)' inline default trivial noexcept-unevaluated 0x{{.+}}{{$}}
- // CHECK-NEXT: | `-ParmVarDecl 0x{{.+}} <col:31> col:31 'const TestClassTemplate2<A> &'{{$}}
- // CHECK-NEXT: `-CXXConstructorDecl 0x{{.+}} <col:31> col:31 implicit constexpr TestClassTemplate2 'void (TestClassTemplate2<A> &&)' inline default trivial noexcept-unevaluated 0x{{.+}}{{$}}
- // CHECK-NEXT: `-ParmVarDecl 0x{{.+}} <col:31> col:31 'TestClassTemplate2<A> &&'{{$}}
+ // CHECK: |-TemplateTypeParmDecl 0x{{.+}} <col:12, col:21> col:21 typename depth 0 index 0 T1{{$}}
+ // CHECK: |-CXXRecordDecl 0x{{.+}} <col:25, col:31> col:31 class TestClassTemplate2{{$}}
+ // CHECK: `-ClassTemplateSpecializationDecl 0x{{.+}} <line:[[@LINE-6]]:3, line:[[@LINE-5]]:3> line:[[@LINE-6]]:31 class TestClassTemplate2 definition implicit_instantiation{{$}}
+ // CHECK: |-DefinitionData pass_in_registers empty aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor can_const_default_init{{$}}
+ // CHECK: | |-DefaultConstructor exists trivial constexpr defaulted_is_constexpr{{$}}
+ // CHECK: | |-CopyConstructor simple trivial has_const_param implicit_has_const_param{{$}}
+ // CHECK: | |-MoveConstructor exists simple trivial{{$}}
+ // CHECK: | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
+ // CHECK: | |-MoveAssignment exists simple trivial needs_implicit{{$}}
+ // CHECK: | `-Destructor simple irrelevant trivial needs_implicit{{$}}
+ // CHECK: |-TemplateArgument type 'testCanonicalTemplate::A'{{$}}
+ // CHECK: | `-typeDetails: RecordType 0x{{.+}} 'testCanonicalTemplate::A'{{$}}
+ // CHECK: | `-CXXRecord 0x{{.+}} 'A'{{$}}
+ // CHECK: |-CXXRecordDecl 0x{{.+}} <col:25, col:31> col:31 implicit class TestClassTemplate2{{$}}
+ // CHECK: |-CXXConstructorDecl 0x{{.+}} <col:31> col:31 implicit used constexpr TestClassTemplate2 'void () noexcept' inline default trivial{{$}}
+ // CHECK: | `-CompoundStmt 0x{{.+}} <col:31>{{$}}
+ // CHECK: |-CXXConstructorDecl 0x{{.+}} <col:31> col:31 implicit constexpr TestClassTemplate2 'void (const TestClassTemplate2<A> &)' inline default trivial noexcept-unevaluated 0x{{.+}}{{$}}
+ // CHECK: | `-ParmVarDecl 0x{{.+}} <col:31> col:31 'const TestClassTemplate2<A> &'{{$}}
+ // CHECK: `-CXXConstructorDecl 0x{{.+}} <col:31> col:31 implicit constexpr TestClassTemplate2 'void (TestClassTemplate2<A> &&)' inline default trivial noexcept-unevaluated 0x{{.+}}{{$}}
+ // CHECK: `-ParmVarDecl 0x{{.+}} <col:31> col:31 'TestClassTemplate2<A> &&'{{$}}
// CHECK: ClassTemplateDecl 0x{{.+}} prev 0x{{.+}} <{{.+}}:[[@LINE-26]]:3, col:31> col:31 TestClassTemplate2{{$}}
- // CHECK-NEXT: |-TemplateTypeParmDecl 0x{{.+}} <col:12, col:21> col:21 typename depth 0 index 0 T1{{$}}
- // CHECK-NEXT: |-CXXRecordDecl 0x{{.+}} prev 0x{{.+}} <col:25, col:31> col:31 class TestClassTemplate2{{$}}
- // CHECK-NEXT: `-ClassTemplateSpecialization 0x{{.+}} 'TestClassTemplate2'{{$}}
+ // CHECK: |-TemplateTypeParmDecl 0x{{.+}} <col:12, col:21> col:21 typename depth 0 index 0 T1{{$}}
+ // CHECK: |-CXXRecordDecl 0x{{.+}} prev 0x{{.+}} <col:25, col:31> col:31 class TestClassTemplate2{{$}}
+ // CHECK: `-ClassTemplateSpecialization 0x{{.+}} 'TestClassTemplate2'{{$}}
// CHECK: ClassTemplateDecl 0x{{.+}} prev 0x{{.+}} <{{.+}}:[[@LINE-30]]:3, line:[[@LINE-29]]:3> line:[[@LINE-30]]:31 TestClassTemplate2{{$}}
- // CHECK-NEXT: |-TemplateTypeParmDecl 0x{{.+}} <col:12, col:21> col:21 typename depth 0 index 0 T1{{$}}
- // CHECK-NEXT: |-CXXRecordDecl 0x{{.+}} prev 0x{{.+}} <col:25, line:[[@LINE-31]]:3> line:[[@LINE-32]]:31 class TestClassTemplate2 definition{{$}}
- // CHECK-NEXT: | |-DefinitionData empty aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor can_const_default_init{{$}}
- // CHECK-NEXT: | | |-DefaultConstructor exists trivial constexpr needs_implicit defaulted_is_constexpr{{$}}
- // CHECK-NEXT: | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
- // CHECK-NEXT: | | |-MoveConstructor exists simple trivial needs_implicit{{$}}
- // CHECK-NEXT: | | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
- // CHECK-NEXT: | | |-MoveAssignment exists simple trivial needs_implicit{{$}}
- // CHECK-NEXT: | | `-Destructor simple irrelevant trivial needs_implicit{{$}}
- // CHECK-NEXT: | `-CXXRecordDecl 0x{{.+}} <col:25, col:31> col:31 implicit class TestClassTemplate2{{$}}
- // CHECK-NEXT: `-ClassTemplateSpecialization 0x{{.+}} 'TestClassTemplate2'{{$}}
+ // CHECK: |-TemplateTypeParmDecl 0x{{.+}} <col:12, col:21> col:21 typename depth 0 index 0 T1{{$}}
+ // CHECK: |-CXXRecordDecl 0x{{.+}} prev 0x{{.+}} <col:25, line:[[@LINE-31]]:3> line:[[@LINE-32]]:31 class TestClassTemplate2 definition{{$}}
+ // CHECK: | |-DefinitionData empty aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor can_const_default_init{{$}}
+ // CHECK: | | |-DefaultConstructor exists trivial constexpr needs_implicit defaulted_is_constexpr{{$}}
+ // CHECK: | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
+ // CHECK: | | |-MoveConstructor exists simple trivial needs_implicit{{$}}
+ // CHECK: | | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param{{$}}
+ // CHECK: | | |-MoveAssignment exists simple trivial needs_implicit{{$}}
+ // CHECK: | | `-Destructor simple irrelevant trivial needs_implicit{{$}}
+ // CHECK: | `-CXXRecordDecl 0x{{.+}} <col:25, col:31> col:31 implicit class TestClassTemplate2{{$}}
+ // CHECK: `-ClassTemplateSpecialization 0x{{.+}} 'TestClassTemplate2'{{$}}
struct S {
template<typename T> static const T TestVarTemplate; // declaration of a static data member template
@@ -612,34 +618,54 @@ namespace testCanonicalTemplate {
int j = S::TestVarTemplate<int>;
}
- // CHECK: VarTemplateDecl 0x{{.+}} <{{.+}}:[[@LINE-11]]:7, col:43> col:43 TestVarTemplate{{$}}
- // CHECK-NEXT: |-TemplateTypeParmDecl 0x{{.+}} <col:16, col:25> col:25 referenced typename depth 0 index 0 T{{$}}
- // CHECK-NEXT: |-VarDecl 0x{{.+}} <col:28, col:43> col:43 TestVarTemplate 'const T' static{{$}}
- // CHECK-NEXT: |-VarTemplateSpecializationDecl 0x{{.+}} parent 0x{{.+}} prev 0x{{.+}} <line:[[@LINE-12]]:3, line:[[@LINE-11]]:34> col:14 referenced TestVarTemplate 'const int' implicit_instantiation cinit{{$}}
- // CHECK-NEXT: | |-NestedNameSpecifier TypeSpec 'testCanonicalTemplate::S'{{$}}
- // CHECK-NEXT: | |-TemplateArgument type 'int'{{$}}
- // CHECK-NEXT: | | `-BuiltinType 0x{{.+}} 'int'{{$}}
- // CHECK-NEXT: | `-InitListExpr 0x{{.+}} <col:32, col:34> 'int'{{$}}
- // CHECK-NEXT: `-VarTemplateSpecializationDecl 0x{{.+}} <line:[[@LINE-19]]:7, col:43> col:43 referenced TestVarTemplate 'const int' implicit_instantiation static{{$}}
- // CHECK-NEXT: `-TemplateArgument type 'int'{{$}}
-
- // CHECK: VarTemplateSpecializationDecl 0x{{.+}} <{{.+}}:[[@LINE-22]]:7, col:43> col:43 referenced TestVarTemplate 'const int' implicit_instantiation static{{$}}
- // CHECK-NEXT:`-TemplateArgument type 'int'{{$}}
- // CHECK-NEXT: `-BuiltinType 0x{{.+}} 'int'{{$}}
-
- // CHECK: VarTemplateDecl 0x{{.+}} parent 0x{{.+}} prev 0x{{.+}} <{{.+}}:[[@LINE-24]]:3, line:[[@LINE-23]]:34> col:14 TestVarTemplate{{$}}
- // CHECK-NEXT: |-TemplateTypeParmDecl 0x{{.+}} <line:[[@LINE-25]]:12, col:21> col:21 referenced typename depth 0 index 0 T{{$}}
- // CHECK-NEXT: |-VarDecl 0x{{.+}} parent 0x{{.+}} prev 0x{{.+}} <line:[[@LINE-25]]:3, col:34> col:14 TestVarTemplate 'const T' cinit{{$}}
- // CHECK-NEXT: | |-NestedNameSpecifier TypeSpec 'testCanonicalTemplate::S'{{$}}
- // CHECK-NEXT: | `-InitListExpr 0x{{.+}} <col:32, col:34> 'void'{{$}}
- // CHECK-NEXT: |-VarTemplateSpecialization 0x{{.+}} 'TestVarTemplate' 'const int'{{$}}
- // CHECK-NEXT: `-VarTemplateSpecialization 0x{{.+}} 'TestVarTemplate' 'const int'{{$}}
-
- // CHECK: VarTemplateSpecializationDecl 0x{{.+}} parent 0x{{.+}} prev 0x{{.+}} <{{.+}}:[[@LINE-32]]:3, line:[[@LINE-31]]:34> col:14 referenced TestVarTemplate 'const int' implicit_instantiation cinit{{$}}
- // CHECK-NEXT: |-NestedNameSpecifier TypeSpec 'testCanonicalTemplate::S'{{$}}
- // CHECK-NEXT: |-TemplateArgument type 'int'{{$}}
- // CHECK-NEXT: | `-BuiltinType 0x{{.+}} 'int'{{$}}
- // CHECK-NEXT: `-InitListExpr 0x{{.+}} <col:32, col:34> 'int'{{$}}
+ // CHECK: VarTemplateDecl 0x{{.+}} <{{.+}}> col:43 TestVarTemplate
+ // CHECK: |-TemplateTypeParmDecl 0x{{.+}} <{{.+}}> col:25 referenced typename depth 0 index 0 T
+ // CHECK: |-VarDecl 0x{{.+}} <{{.+}}> col:43 TestVarTemplate 'const T' static
+ // CHECK: | `-qualTypeDetail: QualType 0x{{.+}} 'const T' const
+ // CHECK: | `-typeDetails: TemplateTypeParmType 0x{{.+}} 'T' dependent depth 0 index 0
+ // CHECK: | `-TemplateTypeParm 0x{{.+}} 'T'
+ // CHECK: |-VarTemplateSpecializationDecl 0x{{.+}} parent 0x{{.+}} prev 0x{{.+}} <{{.+}}> col:14 referenced TestVarTemplate 'const int' implicit_instantiation cinit
+ // CHECK: | |-NestedNameSpecifier TypeSpec 'testCanonicalTemplate::S'
+ // CHECK: | |-TemplateArgument type 'int'
+ // CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+ // CHECK: | |-InitListExpr 0x{{.+}} <{{.+}}> 'int'
+ // CHECK: | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+ // CHECK: | `-typeDetails: SubstTemplateTypeParmType 0x{{.+}} 'int' sugar typename depth 0 index 0 T
+ // CHECK: | |-VarTemplateSpecialization 0x{{.+}} 'TestVarTemplate' 'const int'
+ // CHECK: | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+ // CHECK: `-VarTemplateSpecializationDecl 0x{{.+}} <{{.+}}> col:43 referenced TestVarTemplate 'const int' implicit_instantiation static
+ // CHECK: |-TemplateArgument type 'int'
+ // CHECK: | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+ // CHECK: `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+ // CHECK: `-typeDetails: SubstTemplateTypeParmType 0x{{.+}} 'int' sugar typename depth 0 index 0 T
+ // CHECK: |-VarTemplate 0x{{.+}} 'TestVarTemplate'
+ // CHECK: `-typeDetails: BuiltinType 0x{{.+}} 'int'
+ // CHECK: VarTemplateSpecializationDecl 0x{{.+}} <{{.+}}> col:43 referenced TestVarTemplate 'const int' implicit_instantiation static
+ // CHECK: |-TemplateArgument type 'int'
+ // CHECK: | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+ // CHECK: `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+ // CHECK: `-typeDetails: SubstTemplateTypeParmType 0x{{.+}} 'int' sugar typename depth 0 index 0 T
+ // CHECK: |-VarTemplate 0x{{.+}} 'TestVarTemplate'
+ // CHECK: `-typeDetails: BuiltinType 0x{{.+}} 'int'
+ // CHECK: VarTemplateDecl 0x{{.+}} parent 0x{{.+}} prev 0x{{.+}} <{{.+}}> col:14 TestVarTemplate
+ // CHECK: |-TemplateTypeParmDecl 0x{{.+}} <{{.+}}> col:21 referenced typename depth 0 index 0 T
+ // CHECK: |-VarDecl 0x{{.+}} parent 0x{{.+}} prev 0x{{.+}} <{{.+}}> col:14 TestVarTemplate 'const T' cinit
+ // CHECK: | |-NestedNameSpecifier TypeSpec 'testCanonicalTemplate::S'
+ // CHECK: | |-InitListExpr 0x{{.+}} <{{.+}}> 'void'
+ // CHECK: | `-qualTypeDetail: QualType 0x{{.+}} 'const T' const
+ // CHECK: | `-typeDetails: TemplateTypeParmType 0x{{.+}} 'T' dependent depth 0 index 0
+ // CHECK: | `-TemplateTypeParm 0x{{.+}} 'T'
+ // CHECK: |-VarTemplateSpecialization 0x{{.+}} 'TestVarTemplate' 'const int'
+ // CHECK: `-VarTemplateSpecialization 0x{{.+}} 'TestVarTemplate' 'const int'
+ // CHECK: VarTemplateSpecializationDecl 0x{{.+}} parent 0x{{.+}} prev 0x{{.+}} <{{.+}}> col:14 referenced TestVarTemplate 'const int' implicit_instantiation cinit
+ // CHECK: |-NestedNameSpecifier TypeSpec 'testCanonicalTemplate::S'
+ // CHECK: |-TemplateArgument type 'int'
+ // CHECK: | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+ // CHECK: |-InitListExpr 0x{{.+}} <{{.+}}> 'int'
+ // CHECK: `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+ // CHECK: `-typeDetails: SubstTemplateTypeParmType 0x{{.+}} 'int' sugar typename depth 0 index 0 T
+ // CHECK: |-VarTemplateSpecialization 0x{{.+}} 'TestVarTemplate' 'const int'
+ // CHECK: `-typeDetails: BuiltinType 0x{{.+}} 'int'
}
template <class T>
@@ -648,34 +674,34 @@ class TestClassScopeFunctionSpecialization {
template<> void foo<int>(int a) { }
};
// CHECK: FunctionTemplateDecl{{.*}} foo
-// CHECK-NEXT: TemplateTypeParmDecl{{.*}} referenced class depth 1 index 0 U
-// CHECK-NEXT: CXXMethodDecl{{.*}} foo 'void (U)' implicit-inline
-// CHECK-NEXT: ParmVarDecl
-// CHECK-NEXT: CompoundStmt
-// CHECK-NEXT: CXXMethodDecl{{.*}} foo 'void (int)' explicit_specialization implicit-inline
-// CHECK-NEXT: TemplateArgument{{.*}} 'int'
-// CHECK-NEXT: BuiltinType{{.*}} 'int'
-// CHECK-NEXT: ParmVarDecl
-// CHECK-NEXT: CompoundStmt
+// CHECK: TemplateTypeParmDecl{{.*}} referenced class depth 1 index 0 U
+// CHECK: CXXMethodDecl{{.*}} foo 'void (U)' implicit-inline
+// CHECK: ParmVarDecl
+// CHECK: CompoundStmt
+// CHECK: CXXMethodDecl{{.*}} foo 'void (int)' explicit_specialization implicit-inline
+// CHECK: TemplateArgument{{.*}} 'int'
+// CHECK: BuiltinType{{.*}} 'int'
+// CHECK: ParmVarDecl
+// CHECK: CompoundStmt
namespace TestTemplateTypeParmDecl {
template<typename ... T, class U = int> void foo();
}
// CHECK: NamespaceDecl{{.*}} TestTemplateTypeParmDecl
-// CHECK-NEXT: FunctionTemplateDecl
-// CHECK-NEXT: TemplateTypeParmDecl{{.*}} typename depth 0 index 0 ... T
-// CHECK-NEXT: TemplateTypeParmDecl{{.*}} class depth 0 index 1 U
-// CHECK-NEXT: TemplateArgument type 'int'
+// CHECK: FunctionTemplateDecl
+// CHECK: TemplateTypeParmDecl{{.*}} typename depth 0 index 0 ... T
+// CHECK: TemplateTypeParmDecl{{.*}} class depth 0 index 1 U
+// CHECK: TemplateArgument type 'int'
namespace TestNonTypeTemplateParmDecl {
template<int I = 1, int ... J> void foo();
}
// CHECK: NamespaceDecl{{.*}} TestNonTypeTemplateParmDecl
-// CHECK-NEXT: FunctionTemplateDecl
-// CHECK-NEXT: NonTypeTemplateParmDecl{{.*}} 'int' depth 0 index 0 I
-// CHECK-NEXT: TemplateArgument {{.*}} expr
-// CHECK-NEXT: IntegerLiteral{{.*}} 'int' 1
-// CHECK-NEXT: NonTypeTemplateParmDecl{{.*}} 'int' depth 0 index 1 ... J
+// CHECK: FunctionTemplateDecl
+// CHECK: NonTypeTemplateParmDecl{{.*}} 'int' depth 0 index 0 I
+// CHECK: TemplateArgument {{.*}} expr
+// CHECK: IntegerLiteral{{.*}} 'int' 1
+// CHECK: NonTypeTemplateParmDecl{{.*}} 'int' depth 0 index 1 ... J
namespace TestTemplateTemplateParmDecl {
template<typename T> class A;
@@ -683,12 +709,12 @@ namespace TestTemplateTemplateParmDecl {
}
// CHECK: NamespaceDecl{{.*}} TestTemplateTemplateParmDecl
// CHECK: FunctionTemplateDecl
-// CHECK-NEXT: TemplateTemplateParmDecl{{.*}} T
-// CHECK-NEXT: TemplateTypeParmDecl{{.*}} typename
-// CHECK-NEXT: TemplateArgument{{.*}} template 'A':'TestTemplateTemplateParmDecl::A' qualified{{$}}
-// CHECK-NEXT: ClassTemplateDecl {{.*}} A
-// CHECK-NEXT: TemplateTemplateParmDecl{{.*}} ... U
-// CHECK-NEXT: TemplateTypeParmDecl{{.*}} typename
+// CHECK: TemplateTemplateParmDecl{{.*}} T
+// CHECK: TemplateTypeParmDecl{{.*}} typename
+// CHECK: TemplateArgument{{.*}} template 'A':'TestTemplateTemplateParmDecl::A' qualified{{$}}
+// CHECK: ClassTemplateDecl {{.*}} A
+// CHECK: TemplateTemplateParmDecl{{.*}} ... U
+// CHECK: TemplateTypeParmDecl{{.*}} typename
namespace TestTemplateArgument {
template<typename> class A { };
@@ -704,7 +730,7 @@ namespace TestTemplateArgument {
template class testDecl<foo>;
// CHECK: ClassTemplateSpecializationDecl{{.*}} class testDecl
// CHECK: TemplateArgument{{.*}} decl
- // CHECK-NEXT: Function{{.*}}foo
+ // CHECK: Function{{.*}}foo
template class testDecl<nullptr>;
// CHECK: ClassTemplateSpecializationDecl{{.*}} class testDecl
@@ -729,15 +755,15 @@ namespace TestTemplateArgument {
template<int I> class testExpr<I> { };
// CHECK: ClassTemplatePartialSpecializationDecl{{.*}} class testExpr
// CHECK: TemplateArgument{{.*}} expr
- // CHECK-NEXT: DeclRefExpr{{.*}}I
+ // CHECK: DeclRefExpr{{.*}}I
template<int, int ...> class testPack { };
template class testPack<0, 1, 2>;
// CHECK: ClassTemplateSpecializationDecl{{.*}} class testPack
// CHECK: TemplateArgument{{.*}} integral '0'
- // CHECK-NEXT: TemplateArgument{{.*}} pack
- // CHECK-NEXT: TemplateArgument{{.*}} integral '1'
- // CHECK-NEXT: TemplateArgument{{.*}} integral '2'
+ // CHECK: TemplateArgument{{.*}} pack
+ // CHECK: TemplateArgument{{.*}} integral '1'
+ // CHECK: TemplateArgument{{.*}} integral '2'
}
namespace testUsingDecl {
@@ -747,9 +773,9 @@ namespace TestUsingDecl {
using testUsingDecl::i;
}
// CHECK: NamespaceDecl{{.*}} TestUsingDecl
-// CHECK-NEXT: UsingDecl{{.*}} testUsingDecl::i
-// CHECK-NEXT: | `-NestedNameSpecifier Namespace 0x{{.*}} 'testUsingDecl
-// CHECK-NEXT: UsingShadowDecl{{.*}} Var{{.*}} 'i' 'int'
+// CHECK: UsingDecl{{.*}} testUsingDecl::i
+// CHECK: | `-NestedNameSpecifier Namespace 0x{{.*}} 'testUsingDecl
+// CHECK: UsingShadowDecl{{.*}} Var{{.*}} 'i' 'int'
namespace testUnresolvedUsing {
class A { };
@@ -771,10 +797,10 @@ namespace TestLinkageSpecDecl {
extern "C++" void test2();
}
// CHECK: NamespaceDecl{{.*}} TestLinkageSpecDecl
-// CHECK-NEXT: LinkageSpecDecl{{.*}} C
-// CHECK-NEXT: FunctionDecl
-// CHECK-NEXT: LinkageSpecDecl{{.*}} C++
-// CHECK-NEXT: FunctionDecl
+// CHECK: LinkageSpecDecl{{.*}} C
+// CHECK: FunctionDecl
+// CHECK: LinkageSpecDecl{{.*}} C++
+// CHECK: FunctionDecl
class TestAccessSpecDecl {
public:
@@ -783,9 +809,9 @@ class TestAccessSpecDecl {
};
// CHECK: CXXRecordDecl{{.*}} class TestAccessSpecDecl
// CHECK: CXXRecordDecl{{.*}} class TestAccessSpecDecl
-// CHECK-NEXT: AccessSpecDecl{{.*}} public
-// CHECK-NEXT: AccessSpecDecl{{.*}} private
-// CHECK-NEXT: AccessSpecDecl{{.*}} protected
+// CHECK: AccessSpecDecl{{.*}} public
+// CHECK: AccessSpecDecl{{.*}} private
+// CHECK: AccessSpecDecl{{.*}} protected
template<typename T> class TestFriendDecl {
friend int foo();
@@ -794,18 +820,18 @@ template<typename T> class TestFriendDecl {
};
// CHECK: CXXRecord{{.*}} TestFriendDecl
// CHECK: CXXRecord{{.*}} TestFriendDecl
-// CHECK-NEXT: FriendDecl
-// CHECK-NEXT: FunctionDecl{{.*}} foo
-// CHECK-NEXT: FriendDecl{{.*}} 'class A':'A'
-// CHECK-NEXT: CXXRecordDecl{{.*}} class A
-// CHECK-NEXT: FriendDecl{{.*}} 'T'
+// CHECK: FriendDecl
+// CHECK: FunctionDecl{{.*}} foo
+// CHECK: FriendDecl{{.*}} 'class A':'A'
+// CHECK: CXXRecordDecl{{.*}} class A
+// CHECK: FriendDecl{{.*}} 'T'
namespace TestFileScopeAsmDecl {
asm("ret");
}
// CHECK: NamespaceDecl{{.*}} TestFileScopeAsmDecl{{$}}
// CHECK: FileScopeAsmDecl{{.*> .*$}}
-// CHECK-NEXT: StringLiteral
+// CHECK: StringLiteral
namespace TestFriendDecl2 {
void f();
@@ -838,17 +864,23 @@ namespace Comment {
namespace TestConstexprVariableTemplateWithInitializer {
template<typename T> constexpr T foo{};
- // CHECK: VarTemplateDecl 0x{{.+}} <{{.+}}:[[@LINE-1]]:3, col:40> col:36 foo{{$}}
- // CHECK-NEXT: |-TemplateTypeParmDecl 0x{{.+}} <col:12, col:21> col:21 referenced typename depth 0 index 0 T{{$}}
- // CHECK-NEXT: `-VarDecl 0x{{.+}} <col:24, col:40> col:36 foo 'const T' constexpr listinit{{$}}
- // CHECK-NEXT: `-InitListExpr 0x{{.+}} <col:39, col:40> 'void'{{$}}
+ // CHECK: |-VarTemplateDecl 0x{{.+}} <{{.+}}> col:36 foo
+ // CHECK-NEXT: | |-TemplateTypeParmDecl 0x{{.+}} <{{.+}}> col:21 referenced typename depth 0 index 0 T
+ // CHECK-NEXT: | `-VarDecl 0x{{.+}} <{{.+}}> col:36 foo 'const T' constexpr listinit
+ // CHECK-NEXT: | |-InitListExpr 0x{{.+}} <{{.+}}> 'void'
+ // CHECK-NEXT: | `-qualTypeDetail: QualType 0x{{.+}} 'const T' const
+ // CHECK-NEXT: | `-typeDetails: TemplateTypeParmType 0x{{.+}} 'T' dependent depth 0 index 0
+ // CHECK-NEXT: | `-TemplateTypeParm 0x{{.+}} 'T'
template<typename T> constexpr int val{42};
- // CHECK: VarTemplateDecl 0x{{.+}} <{{.+}}:[[@LINE-1]]:3, col:44> col:38 val{{$}}
- // CHECK-NEXT: |-TemplateTypeParmDecl 0x{{.+}} <col:12, col:21> col:21 typename depth 0 index 0 T{{$}}
- // CHECK-NEXT: `-VarDecl 0x{{.+}} <col:24, col:44> col:38 val 'const int' constexpr listinit{{$}}
- // CHECK-NEXT: |-value: Int 42{{$}}
- // CHECK-NEXT: `-InitListExpr 0x{{.+}} <col:41, col:44> 'int'{{$}}
+ // CHECK: |-VarTemplateDecl 0x{{.+}} <{{.+}}> col:38 val
+ // CHECK-NEXT: | |-TemplateTypeParmDecl 0x{{.+}} <{{.+}}> col:21 typename depth 0 index 0 T
+ // CHECK-NEXT: | `-VarDecl 0x{{.+}} <{{.+}}> col:38 val 'const int' constexpr listinit
+ // CHECK-NEXT: | |-value: Int 42
+ // CHECK-NEXT: | |-InitListExpr 0x{{.+}} <{{.+}}> 'int'
+ // CHECK-NEXT: | | `-IntegerLiteral 0x{{.+}} <{{.+}}> 'int' 42
+ // CHECK-NEXT: | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+ // CHECK-NEXT: | `-typeDetails: BuiltinType 0x{{.+}} 'int'
template <typename _Tp>
struct in_place_type_t {
@@ -857,16 +889,22 @@ namespace TestConstexprVariableTemplateWithInitializer {
template <typename _Tp>
inline constexpr in_place_type_t<_Tp> in_place_type{};
- // CHECK: -VarTemplateDecl 0x{{.+}} <line:[[@LINE-2]]:3, line:[[@LINE-1]]:55> col:41 in_place_type{{$}}
- // CHECK-NEXT: |-TemplateTypeParmDecl 0x{{.+}} <line:[[@LINE-3]]:13, col:22> col:22 referenced typename depth 0 index 0 _Tp{{$}}
- // CHECK-NEXT: `-VarDecl 0x{{.+}} <line:[[@LINE-3]]:3, col:55> col:41 in_place_type 'const in_place_type_t<_Tp>' inline constexpr listinit{{$}}
- // CHECK-NEXT: `-InitListExpr 0x{{.+}} <col:54, col:55> 'void'{{$}}
+ // CHECK: |-VarTemplateDecl 0x{{.+}} <{{.+}}> col:41 in_place_type
+ // CHECK-NEXT: | |-TemplateTypeParmDecl 0x{{.+}} <{{.+}}> col:22 referenced typename depth 0 index 0 _Tp
+ // CHECK-NEXT: | `-VarDecl 0x{{.+}} <{{.+}}> col:41 in_place_type 'const in_place_type_t<{{.+}}>' inline constexpr listinit
+ // CHECK-NEXT: | |-InitListExpr 0x{{.+}} <{{.+}}> 'void'
+ // CHECK-NEXT: | `-qualTypeDetail: QualType 0x{{.+}} 'const in_place_type_t<{{.+}}>' const
+ // CHECK-NEXT: | `-typeDetails: ElaboratedType 0x{{.+}} 'in_place_type_t<{{.+}}>' sugar dependent
+ // CHECK-NEXT: | `-typeDetails: TemplateSpecializationType 0x{{.+}} 'in_place_type_t<{{.+}}>' dependent
template <typename T> constexpr T call_init(0);
- // CHECK: -VarTemplateDecl 0x{{.+}} <line:[[@LINE-1]]:3, col:48> col:37 call_init{{$}}
- // CHECK-NEXT: |-TemplateTypeParmDecl 0x{{.+}} <col:13, col:22> col:22 referenced typename depth 0 index 0 T{{$}}
- // CHECK-NEXT: `-VarDecl 0x{{.+}} <col:25, col:48> col:37 call_init 'const T' constexpr callinit{{$}}
- // CHECK-NEXT: `-ParenListExpr 0x{{.+}} <col:46, col:48> 'NULL TYPE'{{$}}
- // CHECK-NEXT: `-IntegerLiteral 0x{{.+}} <col:47> 'int' 0{{$}}
+ // CHECK: `-VarTemplateDecl 0x{{.+}} <{{.+}}> col:37 call_init
+ // CHECK-NEXT: |-TemplateTypeParmDecl 0x{{.+}} <{{.+}}> col:22 referenced typename depth 0 index 0 T
+ // CHECK-NEXT: `-VarDecl 0x{{.+}} <{{.+}}> col:37 call_init 'const T' constexpr callinit
+ // CHECK-NEXT: |-ParenListExpr 0x{{.+}} <{{.+}}> 'NULL TYPE'
+ // CHECK-NEXT: | `-IntegerLiteral 0x{{.+}} <{{.+}}> 'int' 0
+ // CHECK-NEXT: `-qualTypeDetail: QualType 0x{{.+}} 'const T' const
+ // CHECK-NEXT: `-typeDetails: TemplateTypeParmType 0x{{.+}} 'T' dependent depth 0 index 0
+ // CHECK-NEXT: `-TemplateTypeParm 0x{{.+}} 'T'
}
diff --git a/clang/test/AST/ast-dump-decl.m b/clang/test/AST/ast-dump-decl.m
index 5f09b6042f409..6903b422b4150 100644
--- a/clang/test/AST/ast-dump-decl.m
+++ b/clang/test/AST/ast-dump-decl.m
@@ -47,9 +47,9 @@ - (int) TestObjCMethodDecl: (int)i, ... {
}
// CHECK: ObjCMethodDecl{{.*}} - TestObjCMethodDecl: 'int' variadic
// CHECK-NEXT: ImplicitParamDecl{{.*}} self
-// CHECK-NEXT: ImplicitParamDecl{{.*}} _cmd
-// CHECK-NEXT: ParmVarDecl{{.*}} i 'int'
-// CHECK-NEXT: CompoundStmt
+// CHECK: ImplicitParamDecl{{.*}} _cmd
+// CHECK: ParmVarDecl{{.*}} i 'int'
+// CHECK: CompoundStmt
@end
@protocol TestObjCProtocolDecl
@@ -121,7 +121,7 @@ @interface TestObjCProperty: A
// CHECK-NEXT: ObjCMethodDecl{{.*}} getterFoo
// CHECK-NEXT: ObjCMethodDecl{{.*}} setterFoo:
// CHECK-NEXT: ParmVarDecl{{.*}} foo
-// CHECK-NEXT: ObjCMethodDecl{{.*}} bar
+// CHECK: ObjCMethodDecl{{.*}} bar
// CHECK-NEXT: ObjCMethodDecl{{.*}} setBar:
// CHECK-NEXT: ParmVarDecl{{.*}} bar
@@ -147,7 +147,7 @@ void TestBlockDecl(int x) {
// CHECK: FunctionDecl{{.*}}TestBlockDecl
// CHECK: BlockDecl {{.+}} <col:3, col:21> col:3 variadic
// CHECK-NEXT: ParmVarDecl{{.*}} y 'int'
-// CHECK-NEXT: capture ParmVar{{.*}} 'x' 'int'
+// CHECK: capture ParmVar{{.*}} 'x' 'int'
// CHECK-NEXT: CompoundStmt
// CHECK-NEXT: ImplicitCastExpr
// CHECK-NEXT: DeclRefExpr{{.*}} 'x'
diff --git a/clang/test/AST/ast-dump-decl.mm b/clang/test/AST/ast-dump-decl.mm
index c9282e9537e28..ffd755062dbe8 100644
--- a/clang/test/AST/ast-dump-decl.mm
+++ b/clang/test/AST/ast-dump-decl.mm
@@ -44,9 +44,9 @@ - (void) foo {
// CHECK-NEXT: CompoundStmt
// CHECK-NEXT: CXXConstructorDecl{{.*}} 'void (const X &)
// CHECK-NEXT: ParmVarDecl{{.*}} 'const X &'
-// CHECK-NEXT: CXXConstructorDecl{{.*}} 'void (X &&)
+// CHECK: CXXConstructorDecl{{.*}} 'void (X &&)
// CHECK-NEXT: ParmVarDecl{{.*}} 'X &&'
-// CHECK-NEXT: CXXDestructorDecl
+// CHECK: CXXDestructorDecl
// CHECK-NEXT: ObjCIvarDecl{{.*}} X
// CHECK-NEXT: ObjCMethodDecl{{.*}} foo
diff --git a/clang/test/AST/ast-dump-default-arg-json.cpp b/clang/test/AST/ast-dump-default-arg-json.cpp
index b6a138934caf9..a2765cced1426 100644
--- a/clang/test/AST/ast-dump-default-arg-json.cpp
+++ b/clang/test/AST/ast-dump-default-arg-json.cpp
@@ -1,2091 +1,2502 @@
-// RUN: %clang_cc1 -std=c++23 -triple x86_64-linux-gnu -fsyntax-only -ast-dump=json %s | FileCheck %s
-
-struct S {
- int arr[1];
- const int *begin() const { return arr; }
- const int *end() const { return &arr[1]; }
- S() {}
- ~S() {}
-};
-
-S func(const int &, const S &s = S());
-
-void test() {
- for (auto v : func(1)) {}
-}
-
-// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "TranslationUnitDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TypedefDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "__int128_t",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "__int128"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "__int128"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TypedefDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "__uint128_t",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned __int128"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned __int128"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TypedefDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "__NSConstantString",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "__NSConstantString_tag"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "RecordType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "__NSConstantString_tag"
-// CHECK-NEXT: },
-// CHECK-NEXT: "decl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "name": "__NSConstantString_tag"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TypedefDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "__builtin_ms_va_list",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "PointerType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TypedefDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "__builtin_va_list",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "__va_list_tag[1]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ConstantArrayType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "__va_list_tag[1]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "size": 1,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "RecordType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "__va_list_tag"
-// CHECK-NEXT: },
-// CHECK-NEXT: "decl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "name": "__va_list_tag"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 110,
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 3,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 103,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 235,
-// CHECK-NEXT: "line": 9,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "S",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "nonTrivial": true,
-// CHECK-NEXT: "userProvided": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "nonTrivial": true,
-// CHECK-NEXT: "userDeclared": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasUserDeclaredConstructor": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "moveAssign": {},
-// CHECK-NEXT: "moveCtor": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 110,
-// CHECK-NEXT: "line": 3,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 103,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 110,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "S",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 120,
-// CHECK-NEXT: "line": 4,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 116,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 125,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "arr",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int[1]"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 141,
-// CHECK-NEXT: "line": 5,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 130,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 169,
-// CHECK-NEXT: "col": 42,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "begin",
-// CHECK-NEXT: "mangledName": "_ZNK1S5beginEv",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int *() const"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 155,
-// CHECK-NEXT: "col": 28,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 169,
-// CHECK-NEXT: "col": 42,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ReturnStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 157,
-// CHECK-NEXT: "col": 30,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 164,
-// CHECK-NEXT: "col": 37,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 164,
-// CHECK-NEXT: "col": 37,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 164,
-// CHECK-NEXT: "col": 37,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "ArrayToPointerDecay",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "MemberExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 164,
-// CHECK-NEXT: "col": 37,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 164,
-// CHECK-NEXT: "col": 37,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int[1]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "name": "arr",
-// CHECK-NEXT: "isArrow": true,
-// CHECK-NEXT: "referencedMemberDecl": "0x{{.*}}",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXThisExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 164,
-// CHECK-NEXT: "col": 37,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 164,
-// CHECK-NEXT: "col": 37,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const S *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "implicit": true
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 184,
-// CHECK-NEXT: "line": 6,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 173,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 214,
-// CHECK-NEXT: "col": 44,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "end",
-// CHECK-NEXT: "mangledName": "_ZNK1S3endEv",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int *() const"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 196,
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 214,
-// CHECK-NEXT: "col": 44,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ReturnStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 198,
-// CHECK-NEXT: "col": 28,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 211,
-// CHECK-NEXT: "col": 41,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 205,
-// CHECK-NEXT: "col": 35,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 211,
-// CHECK-NEXT: "col": 41,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "isPostfix": false,
-// CHECK-NEXT: "opcode": "&",
-// CHECK-NEXT: "canOverflow": false,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ArraySubscriptExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 206,
-// CHECK-NEXT: "col": 36,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 211,
-// CHECK-NEXT: "col": 41,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 206,
-// CHECK-NEXT: "col": 36,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 206,
-// CHECK-NEXT: "col": 36,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "ArrayToPointerDecay",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "MemberExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 206,
-// CHECK-NEXT: "col": 36,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 206,
-// CHECK-NEXT: "col": 36,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int[1]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "name": "arr",
-// CHECK-NEXT: "isArrow": true,
-// CHECK-NEXT: "referencedMemberDecl": "0x{{.*}}",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXThisExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 206,
-// CHECK-NEXT: "col": 36,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 206,
-// CHECK-NEXT: "col": 36,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const S *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "implicit": true
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 210,
-// CHECK-NEXT: "col": 40,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 210,
-// CHECK-NEXT: "col": 40,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "1"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXConstructorDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 218,
-// CHECK-NEXT: "line": 7,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 218,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 223,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "S",
-// CHECK-NEXT: "mangledName": "_ZN1SC1Ev",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 222,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 223,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXDestructorDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 227,
-// CHECK-NEXT: "line": 8,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 227,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 233,
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "~S",
-// CHECK-NEXT: "mangledName": "_ZN1SD1Ev",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void () noexcept"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 232,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 233,
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXConstructorDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 110,
-// CHECK-NEXT: "line": 3,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 110,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 110,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "S",
-// CHECK-NEXT: "mangledName": "_ZN1SC1ERKS_",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (const S &)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true,
-// CHECK-NEXT: "explicitlyDefaulted": "default",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 110,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 110,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 110,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const S &"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 241,
-// CHECK-NEXT: "line": 11,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 239,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 275,
-// CHECK-NEXT: "col": 37,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "func",
-// CHECK-NEXT: "mangledName": "_Z4funcRKiRK1S",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S (const int &, const S &)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 257,
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 246,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 256,
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int &"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 268,
-// CHECK-NEXT: "col": 30,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 259,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 274,
-// CHECK-NEXT: "col": 36,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "s",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const S &"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ExprWithCleanups",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 272,
-// CHECK-NEXT: "col": 34,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 274,
-// CHECK-NEXT: "col": 36,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "cleanupsHaveSideEffects": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "MaterializeTemporaryExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 272,
-// CHECK-NEXT: "col": 34,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 274,
-// CHECK-NEXT: "col": 36,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "storageDuration": "full expression",
-// CHECK-NEXT: "boundToLValueRef": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 272,
-// CHECK-NEXT: "col": 34,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 274,
-// CHECK-NEXT: "col": 36,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "NoOp",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXBindTemporaryExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 272,
-// CHECK-NEXT: "col": 34,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 274,
-// CHECK-NEXT: "col": 36,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "temp": "0x{{.*}}",
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXDestructorDecl",
-// CHECK-NEXT: "name": "~S",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void () noexcept"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXTemporaryObjectExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 272,
-// CHECK-NEXT: "col": 34,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 274,
-// CHECK-NEXT: "col": 36,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "ctorType": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "hadMultipleCandidates": true,
-// CHECK-NEXT: "constructionKind": "complete"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 284,
-// CHECK-NEXT: "line": 13,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 279,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 321,
-// CHECK-NEXT: "line": 15,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "test",
-// CHECK-NEXT: "mangledName": "_Z4testv",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 291,
-// CHECK-NEXT: "line": 13,
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 321,
-// CHECK-NEXT: "line": 15,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXForRangeStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 295,
-// CHECK-NEXT: "line": 14,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 319,
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {},
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 309,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 309,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 309,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 309,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 315,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "__range1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S &&"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ExprWithCleanups",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 309,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 315,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "xvalue",
-// CHECK-NEXT: "cleanupsHaveSideEffects": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "MaterializeTemporaryExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 309,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 315,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "xvalue",
-// CHECK-NEXT: "extendingDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "__range1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S &&"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "storageDuration": "automatic",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXBindTemporaryExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 309,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 315,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "temp": "0x{{.*}}",
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXDestructorDecl",
-// CHECK-NEXT: "name": "~S",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void () noexcept"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CallExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 309,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 315,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 309,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 309,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S (*)(const int &, const S &)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "FunctionToPointerDecay",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 309,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 309,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S (const int &, const S &)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "name": "func",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S (const int &, const S &)"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "MaterializeTemporaryExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 314,
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 314,
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "extendingDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "__range1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S &&"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "storageDuration": "automatic",
-// CHECK-NEXT: "boundToLValueRef": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 314,
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 314,
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "NoOp",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 314,
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 314,
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "1"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXDefaultArgExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "hasRewrittenInit": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "MaterializeTemporaryExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 272,
-// CHECK-NEXT: "line": 11,
-// CHECK-NEXT: "col": 34,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 274,
-// CHECK-NEXT: "col": 36,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "extendingDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "__range1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S &&"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "storageDuration": "automatic",
-// CHECK-NEXT: "boundToLValueRef": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 272,
-// CHECK-NEXT: "col": 34,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 274,
-// CHECK-NEXT: "col": 36,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "NoOp",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXBindTemporaryExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 272,
-// CHECK-NEXT: "col": 34,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 274,
-// CHECK-NEXT: "col": 36,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "temp": "0x{{.*}}",
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXDestructorDecl",
-// CHECK-NEXT: "name": "~S",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void () noexcept"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXTemporaryObjectExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 272,
-// CHECK-NEXT: "col": 34,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 274,
-// CHECK-NEXT: "col": 36,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "ctorType": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "hadMultipleCandidates": true,
-// CHECK-NEXT: "constructionKind": "complete"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "line": 14,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "__begin1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMemberCallExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "MemberExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<bound member function type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "name": "begin",
-// CHECK-NEXT: "isArrow": false,
-// CHECK-NEXT: "referencedMemberDecl": "0x{{.*}}",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "castKind": "NoOp",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "__range1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S &&"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "__end1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMemberCallExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "MemberExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<bound member function type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "name": "end",
-// CHECK-NEXT: "isArrow": false,
-// CHECK-NEXT: "referencedMemberDecl": "0x{{.*}}",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "castKind": "NoOp",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "__range1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S &&"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "!=",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "__begin1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "__end1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "isPostfix": false,
-// CHECK-NEXT: "opcode": "++",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "__begin1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 300,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 316,
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 305,
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 300,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "v",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "isPostfix": false,
-// CHECK-NEXT: "opcode": "*",
-// CHECK-NEXT: "canOverflow": false,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 307,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "__begin1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 318,
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 319,
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
+// RUN: %clang_cc1 -std=c++23 -triple x86_64-linux-gnu -fsyntax-only -ast-dump=json %s | FileCheck %s
+
+struct S {
+ int arr[1];
+ const int *begin() const { return arr; }
+ const int *end() const { return &arr[1]; }
+ S() {}
+ ~S() {}
+};
+
+S func(const int &, const S &s = S());
+
+void test() {
+ for (auto v : func(1)) {}
+}
+
+// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "TranslationUnitDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "__int128_t",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "__int128"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "__int128"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "__uint128_t",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned __int128"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned __int128"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "__NSConstantString",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "__NSConstantString_tag"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "__NSConstantString_tag"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "__NSConstantString_tag"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "__builtin_ms_va_list",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "PointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "__builtin_va_list",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "__va_list_tag[1]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ConstantArrayType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "__va_list_tag[1]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "size": 1,
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "array"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "__va_list_tag"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "__va_list_tag"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 112,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 3,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 105,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 243,
+// CHECK-NEXT: "line": 9,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "S",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true,
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "nonTrivial": true,
+// CHECK-NEXT: "userProvided": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "nonTrivial": true,
+// CHECK-NEXT: "userDeclared": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasUserDeclaredConstructor": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "moveAssign": {},
+// CHECK-NEXT: "moveCtor": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 112,
+// CHECK-NEXT: "line": 3,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 105,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 112,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "S",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 123,
+// CHECK-NEXT: "line": 4,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 119,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 128,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "arr",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int[1]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int[1]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "array"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 145,
+// CHECK-NEXT: "line": 5,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 134,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 173,
+// CHECK-NEXT: "col": 42,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "begin",
+// CHECK-NEXT: "mangledName": "_ZNK1S5beginEv",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int *() const"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 159,
+// CHECK-NEXT: "col": 28,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 173,
+// CHECK-NEXT: "col": 42,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ReturnStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 161,
+// CHECK-NEXT: "col": 30,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 168,
+// CHECK-NEXT: "col": 37,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 168,
+// CHECK-NEXT: "col": 37,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 168,
+// CHECK-NEXT: "col": 37,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "ArrayToPointerDecay",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "MemberExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 168,
+// CHECK-NEXT: "col": 37,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 168,
+// CHECK-NEXT: "col": 37,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int[1]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "name": "arr",
+// CHECK-NEXT: "isArrow": true,
+// CHECK-NEXT: "referencedMemberDecl": "0x{{.*}}",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXThisExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 168,
+// CHECK-NEXT: "col": 37,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 168,
+// CHECK-NEXT: "col": 37,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const S *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "implicit": true
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 189,
+// CHECK-NEXT: "line": 6,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 178,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 219,
+// CHECK-NEXT: "col": 44,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "end",
+// CHECK-NEXT: "mangledName": "_ZNK1S3endEv",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int *() const"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 201,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 219,
+// CHECK-NEXT: "col": 44,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ReturnStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 203,
+// CHECK-NEXT: "col": 28,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 216,
+// CHECK-NEXT: "col": 41,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UnaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 210,
+// CHECK-NEXT: "col": 35,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 216,
+// CHECK-NEXT: "col": 41,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "isPostfix": false,
+// CHECK-NEXT: "opcode": "&",
+// CHECK-NEXT: "canOverflow": false,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ArraySubscriptExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 211,
+// CHECK-NEXT: "col": 36,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 216,
+// CHECK-NEXT: "col": 41,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 211,
+// CHECK-NEXT: "col": 36,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 211,
+// CHECK-NEXT: "col": 36,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "ArrayToPointerDecay",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "MemberExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 211,
+// CHECK-NEXT: "col": 36,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 211,
+// CHECK-NEXT: "col": 36,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int[1]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "name": "arr",
+// CHECK-NEXT: "isArrow": true,
+// CHECK-NEXT: "referencedMemberDecl": "0x{{.*}}",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXThisExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 211,
+// CHECK-NEXT: "col": 36,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 211,
+// CHECK-NEXT: "col": 36,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const S *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "implicit": true
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 215,
+// CHECK-NEXT: "col": 40,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 215,
+// CHECK-NEXT: "col": 40,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "1"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXConstructorDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 224,
+// CHECK-NEXT: "line": 7,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 224,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 229,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "S",
+// CHECK-NEXT: "mangledName": "_ZN1SC1Ev",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 228,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 229,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXDestructorDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 234,
+// CHECK-NEXT: "line": 8,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 234,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 240,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "~S",
+// CHECK-NEXT: "mangledName": "_ZN1SD1Ev",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void () noexcept"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 239,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 240,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXConstructorDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 112,
+// CHECK-NEXT: "line": 3,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 112,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 112,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "S",
+// CHECK-NEXT: "mangledName": "_ZN1SC1ERKS_",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (const S &)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "constexpr": true,
+// CHECK-NEXT: "explicitlyDefaulted": "default",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 112,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 112,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 112,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const S &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "LValueReferenceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const S &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "qualTypeDetail": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "const",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ElaboratedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 251,
+// CHECK-NEXT: "line": 11,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 249,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 285,
+// CHECK-NEXT: "col": 37,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "func",
+// CHECK-NEXT: "mangledName": "_Z4funcRKiRK1S",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S (const int &, const S &)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 267,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 256,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 266,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "LValueReferenceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "qualTypeDetail": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "const",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 278,
+// CHECK-NEXT: "col": 30,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 269,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 284,
+// CHECK-NEXT: "col": 36,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "s",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const S &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ExprWithCleanups",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 282,
+// CHECK-NEXT: "col": 34,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 284,
+// CHECK-NEXT: "col": 36,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "cleanupsHaveSideEffects": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "MaterializeTemporaryExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 282,
+// CHECK-NEXT: "col": 34,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 284,
+// CHECK-NEXT: "col": 36,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "storageDuration": "full expression",
+// CHECK-NEXT: "boundToLValueRef": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 282,
+// CHECK-NEXT: "col": 34,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 284,
+// CHECK-NEXT: "col": 36,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "NoOp",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXBindTemporaryExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 282,
+// CHECK-NEXT: "col": 34,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 284,
+// CHECK-NEXT: "col": 36,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "temp": "0x{{.*}}",
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXDestructorDecl",
+// CHECK-NEXT: "name": "~S",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void () noexcept"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXTemporaryObjectExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 282,
+// CHECK-NEXT: "col": 34,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 284,
+// CHECK-NEXT: "col": 36,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "ctorType": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "hadMultipleCandidates": true,
+// CHECK-NEXT: "constructionKind": "complete"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 296,
+// CHECK-NEXT: "line": 13,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 291,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 335,
+// CHECK-NEXT: "line": 15,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "test",
+// CHECK-NEXT: "mangledName": "_Z4testv",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 303,
+// CHECK-NEXT: "line": 13,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 335,
+// CHECK-NEXT: "line": 15,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXForRangeStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 308,
+// CHECK-NEXT: "line": 14,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 332,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {},
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 322,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 322,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 322,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 322,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 328,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "__range1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S &&"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ExprWithCleanups",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 322,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 328,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "xvalue",
+// CHECK-NEXT: "cleanupsHaveSideEffects": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "MaterializeTemporaryExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 322,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 328,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "xvalue",
+// CHECK-NEXT: "extendingDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "__range1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S &&"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "storageDuration": "automatic",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXBindTemporaryExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 322,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 328,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "temp": "0x{{.*}}",
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXDestructorDecl",
+// CHECK-NEXT: "name": "~S",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void () noexcept"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CallExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 322,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 328,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 322,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 322,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S (*)(const int &, const S &)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "FunctionToPointerDecay",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 322,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 322,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S (const int &, const S &)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "name": "func",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S (const int &, const S &)"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S (const int &, const S &)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "MaterializeTemporaryExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 327,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 327,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "extendingDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "__range1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S &&"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "storageDuration": "automatic",
+// CHECK-NEXT: "boundToLValueRef": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 327,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 327,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "NoOp",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 327,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 327,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "1"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXDefaultArgExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "hasRewrittenInit": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "MaterializeTemporaryExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 282,
+// CHECK-NEXT: "line": 11,
+// CHECK-NEXT: "col": 34,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 284,
+// CHECK-NEXT: "col": 36,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "extendingDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "__range1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S &&"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "storageDuration": "automatic",
+// CHECK-NEXT: "boundToLValueRef": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 282,
+// CHECK-NEXT: "col": 34,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 284,
+// CHECK-NEXT: "col": 36,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "NoOp",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXBindTemporaryExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 282,
+// CHECK-NEXT: "col": 34,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 284,
+// CHECK-NEXT: "col": 36,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "temp": "0x{{.*}}",
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXDestructorDecl",
+// CHECK-NEXT: "name": "~S",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void () noexcept"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXTemporaryObjectExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 282,
+// CHECK-NEXT: "col": 34,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 284,
+// CHECK-NEXT: "col": 36,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "ctorType": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "hadMultipleCandidates": true,
+// CHECK-NEXT: "constructionKind": "complete"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RValueReferenceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S &&"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "AutoType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "undeduced": false,
+// CHECK-NEXT: "typeKeyword": "auto",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "line": 14,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "__begin1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMemberCallExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "MemberExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<bound member function type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "name": "begin",
+// CHECK-NEXT: "isArrow": false,
+// CHECK-NEXT: "referencedMemberDecl": "0x{{.*}}",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "castKind": "NoOp",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "__range1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S &&"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "AutoType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "undeduced": false,
+// CHECK-NEXT: "typeKeyword": "auto",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "PointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualTypeDetail": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "__end1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMemberCallExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "MemberExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<bound member function type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "name": "end",
+// CHECK-NEXT: "isArrow": false,
+// CHECK-NEXT: "referencedMemberDecl": "0x{{.*}}",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "castKind": "NoOp",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "__range1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S &&"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "undeduced": false,
+// CHECK-NEXT: "typeKeyword": "auto",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "!=",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "__begin1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "__end1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UnaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "isPostfix": false,
+// CHECK-NEXT: "opcode": "++",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "__begin1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 313,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 329,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 318,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 313,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "v",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UnaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "isPostfix": false,
+// CHECK-NEXT: "opcode": "*",
+// CHECK-NEXT: "canOverflow": false,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "__begin1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "AutoType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "undeduced": false,
+// CHECK-NEXT: "typeKeyword": "auto",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 331,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 332,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
diff --git a/clang/test/AST/ast-dump-default-init-json.cpp b/clang/test/AST/ast-dump-default-init-json.cpp
index f4949a9c9eedf..adcc40ff79b72 100644
--- a/clang/test/AST/ast-dump-default-init-json.cpp
+++ b/clang/test/AST/ast-dump-default-init-json.cpp
@@ -1,929 +1,1000 @@
-// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsyntax-only -ast-dump=json %s | FileCheck %s
-
-struct A {
- int arr[1];
-};
-
-struct B {
- const A &a = A{{0}};
-};
-
-void test() {
- B b{};
-}
-
-// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "TranslationUnitDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TypedefDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "__int128_t",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "__int128"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "__int128"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TypedefDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "__uint128_t",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned __int128"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned __int128"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TypedefDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "__NSConstantString",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "__NSConstantString_tag"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "RecordType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "__NSConstantString_tag"
-// CHECK-NEXT: },
-// CHECK-NEXT: "decl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "name": "__NSConstantString_tag"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TypedefDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "__builtin_ms_va_list",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "PointerType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TypedefDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "__builtin_va_list",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "__va_list_tag[1]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ConstantArrayType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "__va_list_tag[1]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "size": 1,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "RecordType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "__va_list_tag"
-// CHECK-NEXT: },
-// CHECK-NEXT: "decl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "name": "__va_list_tag"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 99,
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 3,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 92,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 117,
-// CHECK-NEXT: "line": 5,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "A",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 99,
-// CHECK-NEXT: "line": 3,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 92,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 99,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "A",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 109,
-// CHECK-NEXT: "line": 4,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 105,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 114,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "arr",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int[1]"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXDestructorDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 99,
-// CHECK-NEXT: "line": 3,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 99,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 99,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "~A",
-// CHECK-NEXT: "mangledName": "_ZN1AD1Ev",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void () noexcept"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "explicitlyDefaulted": "default"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 128,
-// CHECK-NEXT: "line": 7,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 121,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 155,
-// CHECK-NEXT: "line": 9,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "B",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "nonTrivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 128,
-// CHECK-NEXT: "line": 7,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 121,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 128,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "B",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 143,
-// CHECK-NEXT: "line": 8,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 134,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 152,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const A &"
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasInClassInitializer": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ExprWithCleanups",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 147,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 152,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const A"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "MaterializeTemporaryExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 147,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 152,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const A"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "extendingDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const A &"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "storageDuration": "automatic",
-// CHECK-NEXT: "boundToLValueRef": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 147,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 152,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const A"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "NoOp",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXFunctionalCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 147,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 152,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "A"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "NoOp",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "InitListExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 148,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 152,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "A"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "InitListExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 149,
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 151,
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int[1]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 150,
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 150,
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 164,
-// CHECK-NEXT: "line": 11,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 159,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 182,
-// CHECK-NEXT: "line": 13,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "test",
-// CHECK-NEXT: "mangledName": "_Z4testv",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 171,
-// CHECK-NEXT: "line": 11,
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 182,
-// CHECK-NEXT: "line": 13,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 175,
-// CHECK-NEXT: "line": 12,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 180,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 177,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 175,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 179,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "B"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "list",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "InitListExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 178,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 179,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "B"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXDefaultInitExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 179,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 179,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const A"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "hasRewrittenInit": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ExprWithCleanups",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 147,
-// CHECK-NEXT: "line": 8,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 152,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const A"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "MaterializeTemporaryExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 147,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 152,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const A"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "extendingDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "B"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "storageDuration": "automatic",
-// CHECK-NEXT: "boundToLValueRef": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 147,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 152,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const A"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "NoOp",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXFunctionalCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 147,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 152,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "A"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "NoOp",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "InitListExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 148,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 152,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "A"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "InitListExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 149,
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 151,
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int[1]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 150,
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 150,
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
+// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsyntax-only -ast-dump=json %s | FileCheck %s
+
+struct A {
+ int arr[1];
+};
+
+struct B {
+ const A &a = A{{0}};
+};
+
+void test() {
+ B b{};
+}
+
+// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "TranslationUnitDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "__int128_t",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "__int128"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "__int128"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "__uint128_t",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned __int128"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned __int128"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "__NSConstantString",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "__NSConstantString_tag"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "__NSConstantString_tag"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "__NSConstantString_tag"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "__builtin_ms_va_list",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "PointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "__builtin_va_list",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "__va_list_tag[1]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ConstantArrayType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "__va_list_tag[1]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "size": 1,
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "array"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "__va_list_tag"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "__va_list_tag"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 101,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 3,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 94,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 121,
+// CHECK-NEXT: "line": 5,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "A",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 101,
+// CHECK-NEXT: "line": 3,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 94,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 101,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "A",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 112,
+// CHECK-NEXT: "line": 4,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 108,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 117,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "arr",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int[1]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int[1]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "array"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXDestructorDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 101,
+// CHECK-NEXT: "line": 3,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 101,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 101,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "~A",
+// CHECK-NEXT: "mangledName": "_ZN1AD1Ev",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void () noexcept"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "explicitlyDefaulted": "default"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 134,
+// CHECK-NEXT: "line": 7,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 127,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 163,
+// CHECK-NEXT: "line": 9,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "B",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true,
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "isConstexpr": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "nonTrivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 134,
+// CHECK-NEXT: "line": 7,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 127,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 134,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "B",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 150,
+// CHECK-NEXT: "line": 8,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 141,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 159,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const A &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasInClassInitializer": true,
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const A &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ExprWithCleanups",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 154,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 159,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const A"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "MaterializeTemporaryExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 154,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 159,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const A"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "extendingDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const A &"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "storageDuration": "automatic",
+// CHECK-NEXT: "boundToLValueRef": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 154,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 159,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const A"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "NoOp",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXFunctionalCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 154,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 159,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "A"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "NoOp",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "InitListExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 155,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 159,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "A"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "InitListExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 156,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 158,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int[1]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 157,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 157,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 174,
+// CHECK-NEXT: "line": 11,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 169,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 194,
+// CHECK-NEXT: "line": 13,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "test",
+// CHECK-NEXT: "mangledName": "_Z4testv",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 181,
+// CHECK-NEXT: "line": 11,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 194,
+// CHECK-NEXT: "line": 13,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 186,
+// CHECK-NEXT: "line": 12,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 191,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 188,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 186,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 190,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "B"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "list",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "InitListExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 189,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 190,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "B"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXDefaultInitExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 190,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 190,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const A"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "hasRewrittenInit": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ExprWithCleanups",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 154,
+// CHECK-NEXT: "line": 8,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 159,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const A"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "MaterializeTemporaryExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 154,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 159,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const A"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "extendingDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "B"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "storageDuration": "automatic",
+// CHECK-NEXT: "boundToLValueRef": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 154,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 159,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const A"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "NoOp",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXFunctionalCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 154,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 159,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "A"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "NoOp",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "InitListExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 155,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 159,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "A"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "InitListExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 156,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 158,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int[1]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 157,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 157,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ElaboratedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "B"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "B"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "B"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
diff --git a/clang/test/AST/ast-dump-expr-errors.cpp b/clang/test/AST/ast-dump-expr-errors.cpp
index 5661a41465eb6..e29934088c65f 100644
--- a/clang/test/AST/ast-dump-expr-errors.cpp
+++ b/clang/test/AST/ast-dump-expr-errors.cpp
@@ -1,46 +1,52 @@
-// RUN: not %clang_cc1 -triple x86_64-unknown-unknown -Wno-unused-value -fcxx-exceptions -std=gnu++17 -ast-dump -frecovery-ast %s | FileCheck -strict-whitespace %s
-
-// Check errors flag is set for RecoveryExpr.
-//
-// CHECK: VarDecl {{.*}} a
-// CHECK-NEXT:`-RecoveryExpr {{.*}} contains-errors
-// CHECK-NEXT: `-UnresolvedLookupExpr {{.*}} 'bar'
-int a = bar();
-
-// The flag propagates through more complicated calls.
-//
-// CHECK: VarDecl {{.*}} b
-// CHECK-NEXT:`-CallExpr {{.*}} contains-errors
-// CHECK-NEXT: |-UnresolvedLookupExpr {{.*}} 'bar'
-// CHECK-NEXT: |-RecoveryExpr {{.*}} contains-errors
-// CHECK-NEXT: | `-UnresolvedLookupExpr {{.*}} 'baz'
-// CHECK-NEXT: `-RecoveryExpr {{.*}} contains-errors
-// CHECK-NEXT: `-UnresolvedLookupExpr {{.*}} 'qux'
-int b = bar(baz(), qux());
-
-// Also propagates through more complicated expressions.
-//
-// CHECK: |-VarDecl {{.*}} c
-// CHECK-NEXT:| `-BinaryOperator {{.*}} '<dependent type>' contains-errors '*'
-// CHECK-NEXT:| |-UnaryOperator {{.*}} '<dependent type>' contains-errors prefix '&'
-// CHECK-NEXT:| | `-ParenExpr {{.*}} '<dependent type>' contains-errors
-// CHECK-NEXT:| | `-BinaryOperator {{.*}} '<dependent type>' contains-errors '+'
-// CHECK-NEXT:| | |-RecoveryExpr {{.*}} '<dependent type>' contains-errors
-// CHECK-NEXT:| | | `-UnresolvedLookupExpr {{.*}} 'bar'
-// CHECK-NEXT:| | `-RecoveryExpr {{.*}} '<dependent type>' contains-errors
-// CHECK-NEXT:| | `-UnresolvedLookupExpr {{.*}} 'baz'
-int c = &(bar() + baz()) * 10;
-
-// Errors flag propagates even when type is not dependent anymore.
-// CHECK: |-VarDecl {{.*}} d
-// CHECK-NEXT:| `-CXXStaticCastExpr {{.*}} 'int' contains-errors
-// CHECK-NEXT:| `-BinaryOperator {{.*}} '<dependent type>' contains-errors '+'
-// CHECK-NEXT:| |-RecoveryExpr {{.*}} '<dependent type>' contains-errors
-// CHECK-NEXT:| | `-UnresolvedLookupExpr {{.*}} 'bar'
-// CHECK-NEXT:| `-IntegerLiteral {{.*}} 1
-int d = static_cast<int>(bar() + 1);
-
-
-// Error type should result in an invalid decl.
-// CHECK: -VarDecl {{.*}} invalid f 'decltype(<recovery-expr>(bar))'
-decltype(bar()) f;
+// RUN: not %clang_cc1 -triple x86_64-unknown-unknown -Wno-unused-value -fcxx-exceptions -std=gnu++17 -ast-dump -frecovery-ast %s | FileCheck -strict-whitespace %s
+
+int a = bar();
+// CHECK: |-VarDecl {{.*}} a 'int' cinit
+// CHECK: | |-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | `-UnresolvedLookupExpr {{.*}} '<overloaded function type>' lvalue (ADL) = 'bar' empty
+// CHECK: | `-typeDetails: BuiltinType {{.*}} 'int'
+
+// The flag propagates through more complicated calls.
+int b = bar(baz(), qux());
+// CHECK: |-VarDecl {{.*}} b 'int' cinit
+// CHECK: | |-CallExpr {{.*}} '<dependent type>' contains-errors
+// CHECK: | | |-UnresolvedLookupExpr {{.*}} '<overloaded function type>' lvalue (ADL) = 'bar' empty
+// CHECK: | | |-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | | `-UnresolvedLookupExpr {{.*}} '<overloaded function type>' lvalue (ADL) = 'baz' empty
+// CHECK: | | `-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | `-UnresolvedLookupExpr {{.*}} '<overloaded function type>' lvalue (ADL) = 'qux' empty
+// CHECK: | `-typeDetails: BuiltinType {{.*}} 'int'
+
+// Also propagates through more complicated expressions.
+int c = &(bar() + baz()) * 10;
+
+// CHECK: |-VarDecl {{.*}} c 'int' cinit
+// CHECK: | |-BinaryOperator {{.*}} '<dependent type>' contains-errors '*'
+// CHECK: | | |-UnaryOperator {{.*}} '<dependent type>' contains-errors prefix '&' cannot overflow
+// CHECK: | | | `-ParenExpr {{.*}} '<dependent type>' contains-errors
+// CHECK: | | | `-BinaryOperator {{.*}} '<dependent type>' contains-errors '+'
+// CHECK: | | | |-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | | | `-UnresolvedLookupExpr {{.*}} '<overloaded function type>' lvalue (ADL) = 'bar' empty
+// CHECK: | | | `-RecoveryExpr {{.*}}'<dependent type>' contains-errors lvalue
+// CHECK: | | | `-UnresolvedLookupExpr {{.*}} '<overloaded function type>' lvalue (ADL) = 'baz' empty
+// CHECK: | | `-IntegerLiteral {{.*}} 'int' 10
+// CHECK: | `-typeDetails: BuiltinType {{.*}} 'int'
+
+// Errors flag propagates even when type is not dependent anymore.
+int d = static_cast<int>(bar() + 1);
+// CHECK: |-VarDecl {{.*}} d 'int' cinit
+// CHECK: | |-CXXStaticCastExpr {{.*}} 'int' contains-errors static_cast<int> <Dependent>
+// CHECK: | | `-BinaryOperator {{.*}} '<dependent type>' contains-errors '+'
+// CHECK: | | |-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | | `-UnresolvedLookupExpr {{.*}} '<overloaded function type>' lvalue (ADL) = 'bar' empty
+// CHECK: | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK: | `-typeDetails: BuiltinType {{.*}} 'int'
+
+
+// Error type should result in an invalid decl.
+
+decltype(bar()) f;
+// CHECK: `-VarDecl {{.*}} invalid f 'decltype(<recovery-expr>(bar))'
+// CHECK: `-typeDetails: DecltypeType {{.*}} 'decltype(<recovery-expr>(bar))' contains-errors dependent
+// CHECK: `-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: `-UnresolvedLookupExpr {{.*}} '<overloaded function type>' lvalue (ADL) = 'bar' empty
\ No newline at end of file
diff --git a/clang/test/AST/ast-dump-expr-json.c b/clang/test/AST/ast-dump-expr-json.c
index e910864eeed65..2a70eaed9d556 100644
--- a/clang/test/AST/ast-dump-expr-json.c
+++ b/clang/test/AST/ast-dump-expr-json.c
@@ -1,5547 +1,6184 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -Wno-unused-value -std=gnu11 -ast-dump=json %s | FileCheck %s
-
-void Comma(void) {
- 1, 2, 3;
-}
-
-void Assignment(int a) {
- a = 12;
- a += a;
-}
-
-void Conditionals(int a) {
- a ? 0 : 1;
- a ?: 0;
-}
-
-void BinaryOperators(int a, int b) {
- // Logical operators
- a || b;
- a && b;
-
- // Bitwise operators
- a | b;
- a ^ b;
- a & b;
-
- // Equality operators
- a == b;
- a != b;
-
- // Relational operators
- a < b;
- a > b;
- a <= b;
- a >= b;
-
- // Bit shifting operators
- a << b;
- a >> b;
-
- // Additive operators
- a + b;
- a - b;
-
- // Multiplicative operators
- a * b;
- a / b;
- a % b;
-}
-
-void UnaryOperators(int a, int *b) {
- // Cast operators
- (float)a;
-
- // ++, --, and ~ are covered elsewhere.
-
- -a;
- +a;
- &a;
- *b;
- !a;
-
- sizeof a;
- sizeof(int);
- _Alignof(int);
-}
-
-struct S {
- int a;
-};
-
-void PostfixOperators(int *a, struct S b, struct S *c) {
- a[0];
- UnaryOperators(*a, a);
-
- b.a;
- c->a;
-
- // Postfix ++ and -- are covered elsewhere.
-
- (int [4]){1, 2, 3, 4, };
- (struct S){1};
-}
-
-enum E { One };
-
-void PrimaryExpressions(int a) {
- a;
- 'a';
- L'a';
- "a";
- L"a";
- u8"a";
- U"a";
- u"a";
-
- 1;
- 1u;
- 1ll;
- 1.0;
- 1.0f;
- 0xFp100000000000000000000F;
- 1.0l;
- One;
-
- (a);
-}
-
-// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
-// using --filters=FunctionDecl
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 3,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 5,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Comma",
-// CHECK-NEXT: "mangledName": "Comma",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (void)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 3,
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 5,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 4,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": ",",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": ",",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "1"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "2"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "3"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 7,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 10,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Assignment",
-// CHECK-NEXT: "mangledName": "Assignment",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (int)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 7,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 10,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 8,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "=",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "12"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundAssignOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 9,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "+=",
-// CHECK-NEXT: "computeLHSType": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "computeResultType": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 12,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 12
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 15,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Conditionals",
-// CHECK-NEXT: "mangledName": "Conditionals",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (int)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 12,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 15,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ConditionalOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 13,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "1"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryConditionalOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 14,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 17,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 15
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 49,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "BinaryOperators",
-// CHECK-NEXT: "mangledName": "BinaryOperators",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (int, int)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 17,
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 33,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 33,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 36,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 49,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 19,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "||",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 20,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "&&",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 23,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "|",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 24,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "^",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 25,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "&",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 28,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "==",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 29,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "!=",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 32,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "<",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 33,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": ">",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 34,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "<=",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 35,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": ">=",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 38,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "<<",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 39,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": ">>",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 42,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "+",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 43,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "-",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 46,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "*",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 47,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "/",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 48,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "%",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 51,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 14
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 66,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "UnaryOperators",
-// CHECK-NEXT: "mangledName": "UnaryOperators",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (int, int *)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 51,
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 33,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 28,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 33,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 36,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 66,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CStyleCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 53,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralToFloating",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "isPartOfExplicitCast": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 57,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "isPostfix": false,
-// CHECK-NEXT: "opcode": "-",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 58,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "isPostfix": false,
-// CHECK-NEXT: "opcode": "+",
-// CHECK-NEXT: "canOverflow": false,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 59,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "isPostfix": false,
-// CHECK-NEXT: "opcode": "&",
-// CHECK-NEXT: "canOverflow": false,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 60,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "isPostfix": false,
-// CHECK-NEXT: "opcode": "*",
-// CHECK-NEXT: "canOverflow": false,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 61,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "isPostfix": false,
-// CHECK-NEXT: "opcode": "!",
-// CHECK-NEXT: "canOverflow": false,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnaryExprOrTypeTraitExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 63,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned long"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "name": "sizeof",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "nonOdrUseReason": "unevaluated"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnaryExprOrTypeTraitExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 64,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned long"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "name": "sizeof",
-// CHECK-NEXT: "argType": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnaryExprOrTypeTraitExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 65,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned long"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "name": "alignof",
-// CHECK-NEXT: "argType": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 72,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 16
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 83,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "PostfixOperators",
-// CHECK-NEXT: "mangledName": "PostfixOperators",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (int *, struct S, struct S *)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 72,
-// CHECK-NEXT: "col": 28,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 28,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 40,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 31,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 40,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "struct S"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 53,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 43,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 53,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "c",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "struct S *"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 56,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 83,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 73,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ArraySubscriptExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CallExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 74,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 14
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 14
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 14
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (*)(int, int *)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "FunctionToPointerDecay",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 14
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 14
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (int, int *)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "name": "UnaryOperators",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (int, int *)"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "isPostfix": false,
-// CHECK-NEXT: "opcode": "*",
-// CHECK-NEXT: "canOverflow": false,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 76,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "MemberExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "isArrow": false,
-// CHECK-NEXT: "referencedMemberDecl": "0x{{.*}}",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "struct S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "struct S"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 77,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "MemberExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "isArrow": true,
-// CHECK-NEXT: "referencedMemberDecl": "0x{{.*}}",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "struct S *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "struct S *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "c",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "struct S *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 81,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "ArrayToPointerDecay",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundLiteralExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int[4]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "InitListExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int[4]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "1"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "2"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "3"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "4"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 82,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "struct S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundLiteralExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "struct S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "InitListExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "struct S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "1"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 87,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 18
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 107,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "PrimaryExpressions",
-// CHECK-NEXT: "mangledName": "PrimaryExpressions",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (int)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 87,
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 32,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 107,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 88,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CharacterLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 89,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": 97
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CharacterLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 90,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": 97
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 91,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "ArrayToPointerDecay",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "StringLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char[2]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "value": "\"a\""
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 92,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "ArrayToPointerDecay",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "StringLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int[2]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "value": "L\"a\""
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 93,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "ArrayToPointerDecay",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "StringLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char[2]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "value": "u8\"a\""
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 94,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "ArrayToPointerDecay",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "StringLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int[2]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "value": "U\"a\""
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 95,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned short *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "ArrayToPointerDecay",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "StringLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned short[2]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "value": "u\"a\""
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 97,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "1"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 98,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "1"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 99,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "long long"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "1"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FloatingLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 100,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "double"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "1"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FloatingLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 101,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "1"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FloatingLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 102,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 26
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 26
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "+Inf"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FloatingLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 103,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "long double"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "1"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 104,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "EnumConstantDecl",
-// CHECK-NEXT: "name": "One",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 106,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParenExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
+// RUN: %clang_cc1 -triple x86_64-unknown-unknown -Wno-unused-value -std=gnu11 -ast-dump=json %s | FileCheck %s
+
+void Comma(void) {
+ 1, 2, 3;
+}
+
+void Assignment(int a) {
+ a = 12;
+ a += a;
+}
+
+void Conditionals(int a) {
+ a ? 0 : 1;
+ a ?: 0;
+}
+
+void BinaryOperators(int a, int b) {
+ // Logical operators
+ a || b;
+ a && b;
+
+ // Bitwise operators
+ a | b;
+ a ^ b;
+ a & b;
+
+ // Equality operators
+ a == b;
+ a != b;
+
+ // Relational operators
+ a < b;
+ a > b;
+ a <= b;
+ a >= b;
+
+ // Bit shifting operators
+ a << b;
+ a >> b;
+
+ // Additive operators
+ a + b;
+ a - b;
+
+ // Multiplicative operators
+ a * b;
+ a / b;
+ a % b;
+}
+
+void UnaryOperators(int a, int *b) {
+ // Cast operators
+ (float)a;
+
+ // ++, --, and ~ are covered elsewhere.
+
+ -a;
+ +a;
+ &a;
+ *b;
+ !a;
+
+ sizeof a;
+ sizeof(int);
+ _Alignof(int);
+}
+
+struct S {
+ int a;
+};
+
+void PostfixOperators(int *a, struct S b, struct S *c) {
+ a[0];
+ UnaryOperators(*a, a);
+
+ b.a;
+ c->a;
+
+ // Postfix ++ and -- are covered elsewhere.
+
+ (int [4]){1, 2, 3, 4, };
+ (struct S){1};
+}
+
+enum E { One };
+
+void PrimaryExpressions(int a) {
+ a;
+ 'a';
+ L'a';
+ "a";
+ L"a";
+ u8"a";
+ U"a";
+ u"a";
+
+ 1;
+ 1u;
+ 1ll;
+ 1.0;
+ 1.0f;
+ 0xFp100000000000000000000F;
+ 1.0l;
+ One;
+
+ (a);
+}
+
+// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
+// using --filters=FunctionDecl
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 120,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 3,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 115,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 147,
+// CHECK-NEXT: "line": 5,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Comma",
+// CHECK-NEXT: "mangledName": "Comma",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (void)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 132,
+// CHECK-NEXT: "line": 3,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 147,
+// CHECK-NEXT: "line": 5,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 137,
+// CHECK-NEXT: "line": 4,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 143,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": ",",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 137,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 140,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": ",",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 137,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 137,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "1"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 140,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 140,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "2"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 143,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 143,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "3"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 157,
+// CHECK-NEXT: "line": 7,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 152,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 200,
+// CHECK-NEXT: "line": 10,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Assignment",
+// CHECK-NEXT: "mangledName": "Assignment",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (int)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 172,
+// CHECK-NEXT: "line": 7,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 168,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 172,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 175,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 200,
+// CHECK-NEXT: "line": 10,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 180,
+// CHECK-NEXT: "line": 8,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 184,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "=",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 180,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 180,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 184,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 184,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "12"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundAssignOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 191,
+// CHECK-NEXT: "line": 9,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 196,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "+=",
+// CHECK-NEXT: "computeLHSType": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "computeResultType": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 191,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 191,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 196,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 196,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 196,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 196,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 210,
+// CHECK-NEXT: "line": 12,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 12
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 205,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 258,
+// CHECK-NEXT: "line": 15,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Conditionals",
+// CHECK-NEXT: "mangledName": "Conditionals",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (int)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 227,
+// CHECK-NEXT: "line": 12,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 223,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 227,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 230,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 258,
+// CHECK-NEXT: "line": 15,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ConditionalOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 235,
+// CHECK-NEXT: "line": 13,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 243,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 235,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 235,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 235,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 235,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 239,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 239,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 243,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 243,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "1"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryConditionalOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 249,
+// CHECK-NEXT: "line": 14,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 254,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 249,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 249,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 249,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 249,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 249,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 249,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 249,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 249,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 249,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 249,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 249,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 249,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 249,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 249,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 249,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 249,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 254,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 254,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 268,
+// CHECK-NEXT: "line": 17,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 15
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 263,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 686,
+// CHECK-NEXT: "line": 49,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "BinaryOperators",
+// CHECK-NEXT: "mangledName": "BinaryOperators",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (int, int)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 288,
+// CHECK-NEXT: "line": 17,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 284,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 288,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 295,
+// CHECK-NEXT: "col": 33,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 291,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 295,
+// CHECK-NEXT: "col": 33,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 298,
+// CHECK-NEXT: "col": 36,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 686,
+// CHECK-NEXT: "line": 49,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 327,
+// CHECK-NEXT: "line": 19,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 332,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "||",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 327,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 327,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 327,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 327,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 332,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 332,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 332,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 332,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 338,
+// CHECK-NEXT: "line": 20,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 343,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "&&",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 338,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 338,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 338,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 338,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 343,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 343,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 343,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 343,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 375,
+// CHECK-NEXT: "line": 23,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 379,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "|",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 375,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 375,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 375,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 375,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 379,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 379,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 379,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 379,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 385,
+// CHECK-NEXT: "line": 24,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 389,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "^",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 385,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 385,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 385,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 385,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 389,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 389,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 389,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 389,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 395,
+// CHECK-NEXT: "line": 25,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 399,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "&",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 395,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 395,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 395,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 395,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 399,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 399,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 399,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 399,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 432,
+// CHECK-NEXT: "line": 28,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 437,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "==",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 432,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 432,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 432,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 432,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 437,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 437,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 437,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 437,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 443,
+// CHECK-NEXT: "line": 29,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 448,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "!=",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 443,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 443,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 443,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 443,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 448,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 448,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 448,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 448,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 483,
+// CHECK-NEXT: "line": 32,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 487,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "<",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 483,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 483,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 483,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 483,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 487,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 487,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 487,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 487,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 493,
+// CHECK-NEXT: "line": 33,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 497,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": ">",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 493,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 493,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 493,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 493,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 497,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 497,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 497,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 497,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 503,
+// CHECK-NEXT: "line": 34,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 508,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "<=",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 503,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 503,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 503,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 503,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 508,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 508,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 508,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 508,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 514,
+// CHECK-NEXT: "line": 35,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 519,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": ">=",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 514,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 514,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 514,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 514,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 519,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 519,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 519,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 519,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 556,
+// CHECK-NEXT: "line": 38,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 561,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "<<",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 556,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 556,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 556,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 556,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 561,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 561,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 561,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 561,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 567,
+// CHECK-NEXT: "line": 39,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 572,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": ">>",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 567,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 567,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 567,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 567,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 572,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 572,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 572,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 572,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 605,
+// CHECK-NEXT: "line": 42,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 609,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "+",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 605,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 605,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 605,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 605,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 609,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 609,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 609,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 609,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 615,
+// CHECK-NEXT: "line": 43,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 619,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "-",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 615,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 615,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 615,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 615,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 619,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 619,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 619,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 619,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 658,
+// CHECK-NEXT: "line": 46,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 662,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "*",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 658,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 658,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 658,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 658,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 662,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 662,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 662,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 662,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 668,
+// CHECK-NEXT: "line": 47,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 672,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "/",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 668,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 668,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 668,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 668,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 672,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 672,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 672,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 672,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 678,
+// CHECK-NEXT: "line": 48,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 682,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "%",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 678,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 678,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 678,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 678,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 682,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 682,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 682,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 682,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 696,
+// CHECK-NEXT: "line": 51,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 14
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 691,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 894,
+// CHECK-NEXT: "line": 66,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "UnaryOperators",
+// CHECK-NEXT: "mangledName": "UnaryOperators",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (int, int *)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 715,
+// CHECK-NEXT: "line": 51,
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 711,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 715,
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 723,
+// CHECK-NEXT: "col": 33,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 718,
+// CHECK-NEXT: "col": 28,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 723,
+// CHECK-NEXT: "col": 33,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "PointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 726,
+// CHECK-NEXT: "col": 36,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 894,
+// CHECK-NEXT: "line": 66,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CStyleCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 752,
+// CHECK-NEXT: "line": 53,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 759,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "float"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralToFloating",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 759,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 759,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "isPartOfExplicitCast": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 759,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 759,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UnaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 812,
+// CHECK-NEXT: "line": 57,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 813,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "isPostfix": false,
+// CHECK-NEXT: "opcode": "-",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 813,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 813,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 813,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 813,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UnaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 819,
+// CHECK-NEXT: "line": 58,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 820,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "isPostfix": false,
+// CHECK-NEXT: "opcode": "+",
+// CHECK-NEXT: "canOverflow": false,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 820,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 820,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 820,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 820,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UnaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 826,
+// CHECK-NEXT: "line": 59,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 827,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "isPostfix": false,
+// CHECK-NEXT: "opcode": "&",
+// CHECK-NEXT: "canOverflow": false,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 827,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 827,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 833,
+// CHECK-NEXT: "line": 60,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 834,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UnaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 833,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 834,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "isPostfix": false,
+// CHECK-NEXT: "opcode": "*",
+// CHECK-NEXT: "canOverflow": false,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 834,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 834,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 834,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 834,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UnaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 840,
+// CHECK-NEXT: "line": 61,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 841,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "isPostfix": false,
+// CHECK-NEXT: "opcode": "!",
+// CHECK-NEXT: "canOverflow": false,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 841,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 841,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 841,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 841,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UnaryExprOrTypeTraitExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 849,
+// CHECK-NEXT: "line": 63,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 856,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned long"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "name": "sizeof",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 856,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 856,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "nonOdrUseReason": "unevaluated",
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UnaryExprOrTypeTraitExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 862,
+// CHECK-NEXT: "line": 64,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 872,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned long"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "name": "sizeof",
+// CHECK-NEXT: "argType": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UnaryExprOrTypeTraitExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 878,
+// CHECK-NEXT: "line": 65,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 890,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned long"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "name": "alignof",
+// CHECK-NEXT: "argType": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 932,
+// CHECK-NEXT: "line": 72,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 16
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 927,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1136,
+// CHECK-NEXT: "line": 83,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "PostfixOperators",
+// CHECK-NEXT: "mangledName": "PostfixOperators",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (int *, struct S, struct S *)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 954,
+// CHECK-NEXT: "line": 72,
+// CHECK-NEXT: "col": 28,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 949,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 954,
+// CHECK-NEXT: "col": 28,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 966,
+// CHECK-NEXT: "col": 40,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 957,
+// CHECK-NEXT: "col": 31,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 966,
+// CHECK-NEXT: "col": 40,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "struct S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ElaboratedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "struct S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "struct S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordDecl",
+// CHECK-NEXT: "name": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 979,
+// CHECK-NEXT: "col": 53,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 969,
+// CHECK-NEXT: "col": 43,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 979,
+// CHECK-NEXT: "col": 53,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "c",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "struct S *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "PointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "struct S *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordDecl",
+// CHECK-NEXT: "name": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 982,
+// CHECK-NEXT: "col": 56,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1136,
+// CHECK-NEXT: "line": 83,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 987,
+// CHECK-NEXT: "line": 73,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 990,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ArraySubscriptExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 987,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 990,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 987,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 987,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 987,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 987,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 989,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 989,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CallExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 996,
+// CHECK-NEXT: "line": 74,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 14
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1016,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 996,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 14
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 996,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 14
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (*)(int, int *)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "FunctionToPointerDecay",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 996,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 14
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 996,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 14
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (int, int *)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "name": "UnaryOperators",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (int, int *)"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (int, int *)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1011,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1012,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UnaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1011,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1012,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "isPostfix": false,
+// CHECK-NEXT: "opcode": "*",
+// CHECK-NEXT: "canOverflow": false,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1012,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1012,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1012,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1012,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1015,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1015,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1015,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1015,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1024,
+// CHECK-NEXT: "line": 76,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1026,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "MemberExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1024,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1026,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "isArrow": false,
+// CHECK-NEXT: "referencedMemberDecl": "0x{{.*}}",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1024,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1024,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "struct S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "struct S"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1032,
+// CHECK-NEXT: "line": 77,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1035,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "MemberExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1032,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1035,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "isArrow": true,
+// CHECK-NEXT: "referencedMemberDecl": "0x{{.*}}",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1032,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1032,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "struct S *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1032,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1032,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "struct S *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "c",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "struct S *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1092,
+// CHECK-NEXT: "line": 81,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1114,
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "ArrayToPointerDecay",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundLiteralExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1092,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1114,
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int[4]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "InitListExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1101,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1114,
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int[4]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1102,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1102,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "1"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1105,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1105,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "2"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1108,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1108,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "3"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1111,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1111,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "4"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1120,
+// CHECK-NEXT: "line": 82,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1132,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "struct S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundLiteralExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1120,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1132,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "struct S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "InitListExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1130,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1132,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "struct S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1131,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1131,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "1"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1165,
+// CHECK-NEXT: "line": 87,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 18
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1160,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1360,
+// CHECK-NEXT: "line": 107,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "PrimaryExpressions",
+// CHECK-NEXT: "mangledName": "PrimaryExpressions",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (int)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1188,
+// CHECK-NEXT: "line": 87,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1184,
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1188,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1191,
+// CHECK-NEXT: "col": 32,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1360,
+// CHECK-NEXT: "line": 107,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1196,
+// CHECK-NEXT: "line": 88,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1196,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1196,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1196,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CharacterLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1202,
+// CHECK-NEXT: "line": 89,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1202,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": 97
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CharacterLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1210,
+// CHECK-NEXT: "line": 90,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1210,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": 97
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1219,
+// CHECK-NEXT: "line": 91,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1219,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "ArrayToPointerDecay",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "StringLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1219,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1219,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char[2]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "value": "\"a\""
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1227,
+// CHECK-NEXT: "line": 92,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1227,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "ArrayToPointerDecay",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "StringLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1227,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1227,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int[2]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "value": "L\"a\""
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1236,
+// CHECK-NEXT: "line": 93,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1236,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "ArrayToPointerDecay",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "StringLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1236,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1236,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char[2]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "value": "u8\"a\""
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1246,
+// CHECK-NEXT: "line": 94,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1246,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "ArrayToPointerDecay",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "StringLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1246,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1246,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int[2]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "value": "U\"a\""
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1255,
+// CHECK-NEXT: "line": 95,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1255,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned short *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "ArrayToPointerDecay",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "StringLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1255,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1255,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned short[2]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "value": "u\"a\""
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1266,
+// CHECK-NEXT: "line": 97,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1266,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "1"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1272,
+// CHECK-NEXT: "line": 98,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1272,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "1"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1279,
+// CHECK-NEXT: "line": 99,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1279,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "long long"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "1"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FloatingLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1287,
+// CHECK-NEXT: "line": 100,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1287,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "double"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "1"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FloatingLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1295,
+// CHECK-NEXT: "line": 101,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1295,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "float"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "1"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FloatingLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1304,
+// CHECK-NEXT: "line": 102,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 26
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1304,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 26
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "float"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "+Inf"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FloatingLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1335,
+// CHECK-NEXT: "line": 103,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1335,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "long double"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "1"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1344,
+// CHECK-NEXT: "line": 104,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1344,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "EnumConstantDecl",
+// CHECK-NEXT: "name": "One",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1354,
+// CHECK-NEXT: "line": 106,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1356,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParenExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1354,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1356,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1355,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1355,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
diff --git a/clang/test/AST/ast-dump-expr-json.cpp b/clang/test/AST/ast-dump-expr-json.cpp
index dd2fe1fcf60cf..0f29b49339d2a 100644
--- a/clang/test/AST/ast-dump-expr-json.cpp
+++ b/clang/test/AST/ast-dump-expr-json.cpp
@@ -1,9225 +1,10355 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -Wno-unused-value -fcxx-exceptions -std=gnu++17 -ast-dump=json -ast-dump-filter Test %s | FileCheck %s
-
-namespace std {
-using size_t = decltype(sizeof(0));
-
-class type_info {
-public:
- virtual ~type_info();
- bool operator==(const type_info& rhs) const noexcept;
- bool operator!=(const type_info& rhs) const noexcept;
- type_info(const type_info& rhs) = delete; // cannot be copied
- type_info& operator=(const type_info& rhs) = delete; // cannot be copied
-};
-
-class bad_typeid {
-public:
- bad_typeid() noexcept;
- bad_typeid(const bad_typeid&) noexcept;
- virtual ~bad_typeid();
- bad_typeid& operator=(const bad_typeid&) noexcept;
- const char* what() const noexcept;
-};
-} // namespace std
-void *operator new(std::size_t, void *ptr);
-
-struct S {
- virtual ~S() = default;
-
- void func(int);
- template <typename Ty>
- Ty foo();
-
- int i;
-};
-
-struct T : S {};
-
-template <typename>
-struct U {};
-
-void TestThrow() {
- throw 12;
- throw;
-}
-
-void TestPointerToMember(S obj1, S *obj2, int S::* data, void (S::*call)(int)) {
- obj1.*data;
- obj2->*data;
- (obj1.*call)(12);
- (obj2->*call)(12);
-}
-
-void TestCasting(const S *s) {
- const_cast<S *>(s);
- static_cast<const T *>(s);
- dynamic_cast<const T *>(s);
- reinterpret_cast<const int *>(s);
-}
-
-template <typename... Ts>
-void TestUnaryExpressions(int *p) {
- sizeof...(Ts);
- noexcept(p - p);
-
- ::new int;
- new (int);
- new int{12};
- new int[2];
- new int[2]{1, 2};
- new (p) int;
- new (p) int{12};
-
- ::delete p;
- delete [] p;
-}
-
-void TestPostfixExpressions(S a, S *p, U<int> *r) {
- a.func(0);
- p->func(0);
- p->template foo<int>();
- a.template foo<float>();
- p->~S();
- a.~S();
- a.~decltype(a)();
- p->::S::~S();
- r->template U<int>::~U();
- typeid(a);
- typeid(S);
- typeid(const volatile S);
-}
-
-template <typename... Ts>
-void TestPrimaryExpressions(Ts... a) {
- struct V {
- void f() {
- this;
-
- [this]{};
- [*this]{};
- }
- };
-
- int b, c;
-
- [](){};
- [](int a, ...){};
- [a...]{};
- [=]{};
- [=] { return b; };
- [&]{};
- [&] { return c; };
- [b, &c]{ return b + c; };
- [a..., x = 12]{};
- []() constexpr {};
- []() mutable {};
- []() noexcept {};
- []() -> int { return 0; };
-
- (a + ...);
- (... + a);
- (a + ... + b);
-}
-
-namespace NS {
-struct X {};
-void f(X);
-void y(...);
-} // namespace NS
-
-void TestADLCall() {
- NS::X x;
- f(x);
- y(x);
-}
-
-void TestNonADLCall() {
- NS::X x;
- NS::f(x);
-}
-
-void TestNonADLCall2() {
- NS::X x;
- using NS::f;
- f(x);
- y(x);
-}
-
-namespace test_adl_call_three {
-using namespace NS;
-void TestNonADLCall3() {
- X x;
- f(x);
-}
-} // namespace test_adl_call_three
-
-// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 41,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 9
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 44,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestThrow",
-// CHECK-NEXT: "mangledName": "_Z9TestThrowv",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 41,
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 44,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXThrowExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 42,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "12"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXThrowExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 43,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 46,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 51,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestPointerToMember",
-// CHECK-NEXT: "mangledName": "_Z19TestPointerToMember1SPS_MS_iMS_FviE",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (S, S *, int S::*, void (S::*)(int))"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 46,
-// CHECK-NEXT: "col": 28,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 28,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "obj1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 37,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 34,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 37,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "obj2",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S *"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 52,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 43,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 52,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "data",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int S::*"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 68,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 58,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 77,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "call",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (S::*)(int)"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 80,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 51,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 47,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "opcode": ".*",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "obj1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int S::*"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int S::*"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "data",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int S::*"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 48,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "opcode": "->*",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "obj2",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int S::*"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int S::*"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "data",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int S::*"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMemberCallExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 49,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParenExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<bound member function type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<bound member function type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": ".*",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "obj1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (S::*)(int)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (S::*)(int)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "call",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (S::*)(int)"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "12"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMemberCallExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 50,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParenExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<bound member function type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<bound member function type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "->*",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "obj2",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (S::*)(int)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (S::*)(int)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "call",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (S::*)(int)"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "12"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 53,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 11
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 58,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestCasting",
-// CHECK-NEXT: "mangledName": "_Z11TestCastingPK1S",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (const S *)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 53,
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "s",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const S *"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 30,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 58,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXConstCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 54,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "NoOp",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const S *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "isPartOfExplicitCast": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const S *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "s",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const S *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXStaticCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 55,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 11
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const T *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "BaseToDerived",
-// CHECK-NEXT: "path": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "name": "S"
-// CHECK-NEXT: }
-// CHECK-NEXT: ],
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const S *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "isPartOfExplicitCast": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const S *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "s",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const S *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXDynamicCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 56,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 12
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 28,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const T *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "Dynamic",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const S *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "isPartOfExplicitCast": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const S *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "s",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const S *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXReinterpretCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 57,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 16
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 34,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "BitCast",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 33,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 33,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const S *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "isPartOfExplicitCast": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 33,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 33,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const S *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "s",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const S *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 61,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 20
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 60,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 75,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestUnaryExpressions",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 60,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "Ts",
-// CHECK-NEXT: "tagUsed": "typename",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0,
-// CHECK-NEXT: "isParameterPack": true
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 61,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 20
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 75,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestUnaryExpressions",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (int *)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 61,
-// CHECK-NEXT: "col": 32,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 32,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "p",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 35,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 75,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "SizeOfPackExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 62,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned long"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "name": "Ts"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXNoexceptExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 63,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "long"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "-",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "p",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "nonOdrUseReason": "unevaluated"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "p",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "nonOdrUseReason": "unevaluated"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXNewExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 65,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "isGlobal": true,
-// CHECK-NEXT: "operatorNewDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "name": "operator new",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *(unsigned long)"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXNewExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 66,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "operatorNewDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "name": "operator new",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *(unsigned long)"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXNewExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 67,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "initStyle": "list",
-// CHECK-NEXT: "operatorNewDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "name": "operator new",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *(unsigned long)"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "InitListExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "12"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXNewExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 68,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "isArray": true,
-// CHECK-NEXT: "operatorNewDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "name": "operator new[]",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *(unsigned long)"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned long"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralCast",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "2"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXNewExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 69,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "isArray": true,
-// CHECK-NEXT: "initStyle": "list",
-// CHECK-NEXT: "operatorNewDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "name": "operator new[]",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *(unsigned long)"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned long"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralCast",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "2"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "InitListExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int[2]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "1"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "2"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXNewExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 70,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "isPlacement": true,
-// CHECK-NEXT: "operatorNewDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "name": "operator new",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *(std::size_t, void *)"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "BitCast",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "p",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXNewExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 71,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "isPlacement": true,
-// CHECK-NEXT: "initStyle": "list",
-// CHECK-NEXT: "operatorNewDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "name": "operator new",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *(std::size_t, void *)"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "InitListExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "12"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "BitCast",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "p",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXDeleteExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 73,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "isGlobal": true,
-// CHECK-NEXT: "operatorDeleteDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "name": "operator delete",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (void *, unsigned long) noexcept"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "p",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXDeleteExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 74,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "isArray": true,
-// CHECK-NEXT: "isArrayAsWritten": true,
-// CHECK-NEXT: "operatorDeleteDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "name": "operator delete[]",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (void *) noexcept"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "p",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 77,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 22
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 90,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestPostfixExpressions",
-// CHECK-NEXT: "mangledName": "_Z22TestPostfixExpressions1SPS_P1UIiE",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (S, S *, U<int> *)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 77,
-// CHECK-NEXT: "col": 31,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 31,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 37,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 34,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 37,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "p",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S *"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 48,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 40,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 48,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "r",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "U<int> *"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 51,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 90,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMemberCallExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 78,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "MemberExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<bound member function type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "name": "func",
-// CHECK-NEXT: "isArrow": false,
-// CHECK-NEXT: "referencedMemberDecl": "0x{{.*}}",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMemberCallExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 79,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "MemberExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<bound member function type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "name": "func",
-// CHECK-NEXT: "isArrow": true,
-// CHECK-NEXT: "referencedMemberDecl": "0x{{.*}}",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "p",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMemberCallExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 80,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "MemberExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<bound member function type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "name": "foo",
-// CHECK-NEXT: "isArrow": true,
-// CHECK-NEXT: "referencedMemberDecl": "0x{{.*}}",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "p",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMemberCallExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 81,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "MemberExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<bound member function type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "name": "foo",
-// CHECK-NEXT: "isArrow": false,
-// CHECK-NEXT: "referencedMemberDecl": "0x{{.*}}",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMemberCallExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 82,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "MemberExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<bound member function type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "name": "~S",
-// CHECK-NEXT: "isArrow": true,
-// CHECK-NEXT: "referencedMemberDecl": "0x{{.*}}",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "p",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMemberCallExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 83,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "MemberExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<bound member function type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "name": "~S",
-// CHECK-NEXT: "isArrow": false,
-// CHECK-NEXT: "referencedMemberDecl": "0x{{.*}}",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMemberCallExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 84,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "MemberExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<bound member function type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "name": "~S",
-// CHECK-NEXT: "isArrow": false,
-// CHECK-NEXT: "referencedMemberDecl": "0x{{.*}}",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMemberCallExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 85,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "MemberExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<bound member function type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "name": "~S",
-// CHECK-NEXT: "isArrow": true,
-// CHECK-NEXT: "referencedMemberDecl": "0x{{.*}}",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "p",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMemberCallExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 86,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "MemberExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<bound member function type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "name": "~U",
-// CHECK-NEXT: "isArrow": true,
-// CHECK-NEXT: "referencedMemberDecl": "0x{{.*}}",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "U<int> *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "U<int> *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "r",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "U<int> *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXTypeidExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 87,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const std::type_info"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXTypeidExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 88,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const std::type_info"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "typeArg": {
-// CHECK-NEXT: "qualType": "S"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXTypeidExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 89,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const std::type_info"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "typeArg": {
-// CHECK-NEXT: "qualType": "const volatile S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "adjustedTypeArg": {
-// CHECK-NEXT: "qualType": "S"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 93,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 22
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 92,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 122,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestPrimaryExpressions",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 92,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "Ts",
-// CHECK-NEXT: "tagUsed": "typename",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0,
-// CHECK-NEXT: "isParameterPack": true
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 93,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 22
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 122,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestPrimaryExpressions",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (Ts...)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 93,
-// CHECK-NEXT: "col": 35,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 35,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Ts..."
-// CHECK-NEXT: },
-// CHECK-NEXT: "isParameterPack": true
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 38,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 122,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 94,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 101,
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 94,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 101,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "V",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 94,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "V",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 95,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 100,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "f",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 95,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 100,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXThisExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 96,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "V *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "LambdaExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 98,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "(lambda at {{.*}}:98:7)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {},
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "isLambda": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {},
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "operator()",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "auto () const -> auto"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "V *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParenListExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NULL TYPE"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXThisExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "V *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "LambdaExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 99,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "(lambda at {{.*}}:99:7)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "isLambda": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {},
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "operator()",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "auto () const -> auto"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "V"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParenListExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NULL TYPE"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "V"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "isPostfix": false,
-// CHECK-NEXT: "opcode": "*",
-// CHECK-NEXT: "canOverflow": false,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXThisExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "V *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 103,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "c",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "LambdaExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 105,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "(lambda at {{.*}}:105:3)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLambda": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {},
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "operator()",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "auto () const"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXConversionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "operator auto (*)()",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "auto (*() const noexcept)()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "__invoke",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "auto ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "storageClass": "static",
-// CHECK-NEXT: "inline": true
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "LambdaExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 106,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "(lambda at {{.*}}:106:3)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLambda": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {},
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "operator()",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "auto (int, ...) const"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "variadic": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXConversionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "operator auto (*)(int, ...)",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "auto (*() const noexcept)(int, ...)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "__invoke",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "auto (int, ...)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "storageClass": "static",
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "variadic": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "LambdaExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 107,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "(lambda at {{.*}}:107:3)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {},
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "isLambda": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {},
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "operator()",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "auto () const -> auto"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Ts..."
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParenListExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NULL TYPE"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Ts"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Ts..."
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "LambdaExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 108,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "(lambda at {{.*}}:108:3)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLambda": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {},
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "operator()",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "auto () const -> auto"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "LambdaExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 109,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "(lambda at {{.*}}:109:3)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLambda": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {},
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "operator()",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "auto () const -> auto"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ReturnStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ReturnStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "LambdaExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 110,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "(lambda at {{.*}}:110:3)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLambda": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {},
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "operator()",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "auto () const -> auto"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "LambdaExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 111,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "(lambda at {{.*}}:111:3)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLambda": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {},
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "operator()",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "auto () const -> auto"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ReturnStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "c",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ReturnStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "c",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "LambdaExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 112,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "(lambda at {{.*}}:112:3)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {},
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "isLambda": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {},
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "operator()",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "auto () const -> auto"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ReturnStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "+",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "c",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int &"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "c",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ReturnStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "+",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "c",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "LambdaExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 113,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "(lambda at {{.*}}:113:3)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {},
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "isLambda": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {},
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "operator()",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "auto () const -> auto"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Ts..."
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParenListExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NULL TYPE"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Ts"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Ts..."
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "12"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "LambdaExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 114,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "(lambda at {{.*}}:114:3)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLambda": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {},
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 9
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "operator()",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "auto () const"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXConversionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "operator auto (*)()",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "auto (*() const noexcept)()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "__invoke",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "auto ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "storageClass": "static",
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "LambdaExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 115,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "(lambda at {{.*}}:115:3)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLambda": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {},
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 7
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "operator()",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "auto ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXConversionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "operator auto (*)()",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "auto (*() const noexcept)()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "__invoke",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "auto ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "storageClass": "static",
-// CHECK-NEXT: "inline": true
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "LambdaExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 116,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "(lambda at {{.*}}:116:3)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLambda": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {},
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "operator()",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "auto () const noexcept"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXConversionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "operator auto (*)() noexcept",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "auto (*() const noexcept)() noexcept"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "__invoke",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "auto () noexcept"
-// CHECK-NEXT: },
-// CHECK-NEXT: "storageClass": "static",
-// CHECK-NEXT: "inline": true
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "LambdaExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 117,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "(lambda at {{.*}}:117:3)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLambda": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {},
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "operator()",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "auto () const -> int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ReturnStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXConversionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "operator int (*)()",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "auto (*() const noexcept)() -> int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "__invoke",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "auto () -> int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "storageClass": "static",
-// CHECK-NEXT: "inline": true
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ReturnStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXFoldExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 119,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<dependent type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {},
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Ts"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Ts..."
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {}
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXFoldExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 120,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<dependent type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {},
-// CHECK-NEXT: {},
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Ts"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Ts..."
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXFoldExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 121,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<dependent type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {},
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Ts"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Ts..."
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 130,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 11
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 134,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestADLCall",
-// CHECK-NEXT: "mangledName": "_Z11TestADLCallv",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 130,
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 134,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 131,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NS::X"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "call",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXConstructExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NS::X"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "ctorType": {
-// CHECK-NEXT: "qualType": "void () noexcept"
-// CHECK-NEXT: },
-// CHECK-NEXT: "hadMultipleCandidates": true,
-// CHECK-NEXT: "constructionKind": "complete"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CallExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 132,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "adl": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (*)(X)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "FunctionToPointerDecay",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (X)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "name": "f",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (X)"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXConstructExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "NS::X",
-// CHECK-NEXT: "qualType": "X"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "ctorType": {
-// CHECK-NEXT: "qualType": "void (const X &) noexcept"
-// CHECK-NEXT: },
-// CHECK-NEXT: "hadMultipleCandidates": true,
-// CHECK-NEXT: "constructionKind": "complete",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "const NS::X",
-// CHECK-NEXT: "qualType": "const X"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "castKind": "NoOp",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NS::X"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NS::X"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CallExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 133,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "adl": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (*)(...)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "FunctionToPointerDecay",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (...)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "name": "y",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (...)"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXConstructExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NS::X"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "ctorType": {
-// CHECK-NEXT: "qualType": "void (const X &) noexcept"
-// CHECK-NEXT: },
-// CHECK-NEXT: "hadMultipleCandidates": true,
-// CHECK-NEXT: "constructionKind": "complete",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "const NS::X",
-// CHECK-NEXT: "qualType": "const X"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "castKind": "NoOp",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NS::X"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NS::X"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 136,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 14
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 139,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestNonADLCall",
-// CHECK-NEXT: "mangledName": "_Z14TestNonADLCallv",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 136,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 139,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 137,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NS::X"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "call",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXConstructExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NS::X"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "ctorType": {
-// CHECK-NEXT: "qualType": "void () noexcept"
-// CHECK-NEXT: },
-// CHECK-NEXT: "hadMultipleCandidates": true,
-// CHECK-NEXT: "constructionKind": "complete"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CallExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 138,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (*)(X)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "FunctionToPointerDecay",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (X)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "name": "f",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (X)"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXConstructExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "NS::X",
-// CHECK-NEXT: "qualType": "X"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "ctorType": {
-// CHECK-NEXT: "qualType": "void (const X &) noexcept"
-// CHECK-NEXT: },
-// CHECK-NEXT: "hadMultipleCandidates": true,
-// CHECK-NEXT: "constructionKind": "complete",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "const NS::X",
-// CHECK-NEXT: "qualType": "const X"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "castKind": "NoOp",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NS::X"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NS::X"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 141,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 15
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 146,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestNonADLCall2",
-// CHECK-NEXT: "mangledName": "_Z15TestNonADLCall2v",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 141,
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 146,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 142,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NS::X"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "call",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXConstructExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NS::X"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "ctorType": {
-// CHECK-NEXT: "qualType": "void () noexcept"
-// CHECK-NEXT: },
-// CHECK-NEXT: "hadMultipleCandidates": true,
-// CHECK-NEXT: "constructionKind": "complete"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 143,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UsingDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "NS::f"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CallExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 144,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (*)(X)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "FunctionToPointerDecay",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (X)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "name": "f",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (X)"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "foundReferencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UsingShadowDecl",
-// CHECK-NEXT: "name": "f"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXConstructExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "NS::X",
-// CHECK-NEXT: "qualType": "X"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "ctorType": {
-// CHECK-NEXT: "qualType": "void (const X &) noexcept"
-// CHECK-NEXT: },
-// CHECK-NEXT: "hadMultipleCandidates": true,
-// CHECK-NEXT: "constructionKind": "complete",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "const NS::X",
-// CHECK-NEXT: "qualType": "const X"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "castKind": "NoOp",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NS::X"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NS::X"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CallExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 145,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "adl": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (*)(...)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "FunctionToPointerDecay",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (...)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "name": "y",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (...)"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXConstructExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NS::X"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "ctorType": {
-// CHECK-NEXT: "qualType": "void (const X &) noexcept"
-// CHECK-NEXT: },
-// CHECK-NEXT: "hadMultipleCandidates": true,
-// CHECK-NEXT: "constructionKind": "complete",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "const NS::X",
-// CHECK-NEXT: "qualType": "const X"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "castKind": "NoOp",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NS::X"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NS::X"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 150,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 15
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 153,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestNonADLCall3",
-// CHECK-NEXT: "mangledName": "_ZN19test_adl_call_three15TestNonADLCall3Ev",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 150,
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 153,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 151,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "NS::X",
-// CHECK-NEXT: "qualType": "X"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "call",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXConstructExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "NS::X",
-// CHECK-NEXT: "qualType": "X"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "ctorType": {
-// CHECK-NEXT: "qualType": "void () noexcept"
-// CHECK-NEXT: },
-// CHECK-NEXT: "hadMultipleCandidates": true,
-// CHECK-NEXT: "constructionKind": "complete"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CallExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 152,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (*)(X)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "FunctionToPointerDecay",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (X)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "name": "f",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (X)"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXConstructExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "NS::X",
-// CHECK-NEXT: "qualType": "X"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "ctorType": {
-// CHECK-NEXT: "qualType": "void (const X &) noexcept"
-// CHECK-NEXT: },
-// CHECK-NEXT: "hadMultipleCandidates": true,
-// CHECK-NEXT: "constructionKind": "complete",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "const NS::X",
-// CHECK-NEXT: "qualType": "const X"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "castKind": "NoOp",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "NS::X",
-// CHECK-NEXT: "qualType": "X"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "NS::X",
-// CHECK-NEXT: "qualType": "X"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
+// RUN: %clang_cc1 -triple x86_64-unknown-unknown -Wno-unused-value -fcxx-exceptions -std=gnu++17 -ast-dump=json -ast-dump-filter Test %s | FileCheck %s
+
+namespace std {
+using size_t = decltype(sizeof(0));
+
+class type_info {
+public:
+ virtual ~type_info();
+ bool operator==(const type_info& rhs) const noexcept;
+ bool operator!=(const type_info& rhs) const noexcept;
+ type_info(const type_info& rhs) = delete; // cannot be copied
+ type_info& operator=(const type_info& rhs) = delete; // cannot be copied
+};
+
+class bad_typeid {
+public:
+ bad_typeid() noexcept;
+ bad_typeid(const bad_typeid&) noexcept;
+ virtual ~bad_typeid();
+ bad_typeid& operator=(const bad_typeid&) noexcept;
+ const char* what() const noexcept;
+};
+} // namespace std
+void *operator new(std::size_t, void *ptr);
+
+struct S {
+ virtual ~S() = default;
+
+ void func(int);
+ template <typename Ty>
+ Ty foo();
+
+ int i;
+};
+
+struct T : S {};
+
+template <typename>
+struct U {};
+
+void TestThrow() {
+ throw 12;
+ throw;
+}
+
+void TestPointerToMember(S obj1, S *obj2, int S::* data, void (S::*call)(int)) {
+ obj1.*data;
+ obj2->*data;
+ (obj1.*call)(12);
+ (obj2->*call)(12);
+}
+
+void TestCasting(const S *s) {
+ const_cast<S *>(s);
+ static_cast<const T *>(s);
+ dynamic_cast<const T *>(s);
+ reinterpret_cast<const int *>(s);
+}
+
+template <typename... Ts>
+void TestUnaryExpressions(int *p) {
+ sizeof...(Ts);
+ noexcept(p - p);
+
+ ::new int;
+ new (int);
+ new int{12};
+ new int[2];
+ new int[2]{1, 2};
+ new (p) int;
+ new (p) int{12};
+
+ ::delete p;
+ delete [] p;
+}
+
+void TestPostfixExpressions(S a, S *p, U<int> *r) {
+ a.func(0);
+ p->func(0);
+ p->template foo<int>();
+ a.template foo<float>();
+ p->~S();
+ a.~S();
+ a.~decltype(a)();
+ p->::S::~S();
+ r->template U<int>::~U();
+ typeid(a);
+ typeid(S);
+ typeid(const volatile S);
+}
+
+template <typename... Ts>
+void TestPrimaryExpressions(Ts... a) {
+ struct V {
+ void f() {
+ this;
+
+ [this]{};
+ [*this]{};
+ }
+ };
+
+ int b, c;
+
+ [](){};
+ [](int a, ...){};
+ [a...]{};
+ [=]{};
+ [=] { return b; };
+ [&]{};
+ [&] { return c; };
+ [b, &c]{ return b + c; };
+ [a..., x = 12]{};
+ []() constexpr {};
+ []() mutable {};
+ []() noexcept {};
+ []() -> int { return 0; };
+
+ (a + ...);
+ (... + a);
+ (a + ... + b);
+}
+
+namespace NS {
+struct X {};
+void f(X);
+void y(...);
+} // namespace NS
+
+void TestADLCall() {
+ NS::X x;
+ f(x);
+ y(x);
+}
+
+void TestNonADLCall() {
+ NS::X x;
+ NS::f(x);
+}
+
+void TestNonADLCall2() {
+ NS::X x;
+ using NS::f;
+ f(x);
+ y(x);
+}
+
+namespace test_adl_call_three {
+using namespace NS;
+void TestNonADLCall3() {
+ X x;
+ f(x);
+}
+} // namespace test_adl_call_three
+
+// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 992,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 41,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 9
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 987,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1030,
+// CHECK-NEXT: "line": 44,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestThrow",
+// CHECK-NEXT: "mangledName": "_Z9TestThrowv",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1004,
+// CHECK-NEXT: "line": 41,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1030,
+// CHECK-NEXT: "line": 44,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXThrowExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1009,
+// CHECK-NEXT: "line": 42,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1015,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1015,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1015,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "12"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXThrowExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1022,
+// CHECK-NEXT: "line": 43,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1022,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1040,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 46,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1035,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1191,
+// CHECK-NEXT: "line": 51,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestPointerToMember",
+// CHECK-NEXT: "mangledName": "_Z19TestPointerToMember1SPS_MS_iMS_FviE",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (S, S *, int S::*, void (S::*)(int))"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1062,
+// CHECK-NEXT: "line": 46,
+// CHECK-NEXT: "col": 28,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1060,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1062,
+// CHECK-NEXT: "col": 28,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "obj1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ElaboratedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1071,
+// CHECK-NEXT: "col": 37,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1068,
+// CHECK-NEXT: "col": 34,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1071,
+// CHECK-NEXT: "col": 37,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "obj2",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "PointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1086,
+// CHECK-NEXT: "col": 52,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1077,
+// CHECK-NEXT: "col": 43,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1086,
+// CHECK-NEXT: "col": 52,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "data",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int S::*"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "MemberPointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int S::*"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isData": true,
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1102,
+// CHECK-NEXT: "col": 68,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1092,
+// CHECK-NEXT: "col": 58,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1111,
+// CHECK-NEXT: "col": 77,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "call",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (S::*)(int)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "MemberPointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (S::*)(int)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isFunction": true,
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParenType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (int)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionProtoType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (int)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "cc": "cdecl",
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "void"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "cc": "cdecl",
+// CHECK-NEXT: "returnTypeDetail": {
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "void"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1114,
+// CHECK-NEXT: "col": 80,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1191,
+// CHECK-NEXT: "line": 51,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1119,
+// CHECK-NEXT: "line": 47,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1125,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "opcode": ".*",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1119,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1119,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "obj1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1125,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1125,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int S::*"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1125,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1125,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int S::*"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "data",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int S::*"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1134,
+// CHECK-NEXT: "line": 48,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1141,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "opcode": "->*",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1134,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1134,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1134,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1134,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "obj2",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1141,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1141,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int S::*"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1141,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1141,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int S::*"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "data",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int S::*"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMemberCallExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1150,
+// CHECK-NEXT: "line": 49,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1165,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParenExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1150,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1161,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<bound member function type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1151,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1157,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<bound member function type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": ".*",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1151,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1151,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "obj1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1157,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1157,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (S::*)(int)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1157,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1157,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (S::*)(int)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "call",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (S::*)(int)"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1163,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1163,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "12"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMemberCallExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1171,
+// CHECK-NEXT: "line": 50,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1187,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParenExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1171,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1183,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<bound member function type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1172,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1179,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<bound member function type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "->*",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1172,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1172,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1172,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1172,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "obj2",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1179,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1179,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (S::*)(int)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1179,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1179,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (S::*)(int)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "call",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (S::*)(int)"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1185,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1185,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "12"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1201,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 53,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 11
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1196,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1349,
+// CHECK-NEXT: "line": 58,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestCasting",
+// CHECK-NEXT: "mangledName": "_Z11TestCastingPK1S",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (const S *)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1222,
+// CHECK-NEXT: "line": 53,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1213,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1222,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "s",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const S *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "PointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const S *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualTypeDetail": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "const",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ElaboratedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1225,
+// CHECK-NEXT: "col": 30,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1349,
+// CHECK-NEXT: "line": 58,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXConstCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1230,
+// CHECK-NEXT: "line": 54,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1247,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "NoOp",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1246,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1246,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const S *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "isPartOfExplicitCast": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1246,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1246,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const S *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "s",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const S *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXStaticCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1253,
+// CHECK-NEXT: "line": 55,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 11
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1277,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const T *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "BaseToDerived",
+// CHECK-NEXT: "path": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "name": "S"
+// CHECK-NEXT: }
+// CHECK-NEXT: ],
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1276,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1276,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const S *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "isPartOfExplicitCast": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1276,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1276,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const S *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "s",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const S *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXDynamicCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1283,
+// CHECK-NEXT: "line": 56,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 12
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1308,
+// CHECK-NEXT: "col": 28,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const T *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "Dynamic",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1307,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1307,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const S *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "isPartOfExplicitCast": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1307,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1307,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const S *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "s",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const S *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXReinterpretCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1314,
+// CHECK-NEXT: "line": 57,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 16
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1345,
+// CHECK-NEXT: "col": 34,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "BitCast",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1344,
+// CHECK-NEXT: "col": 33,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1344,
+// CHECK-NEXT: "col": 33,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const S *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "isPartOfExplicitCast": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1344,
+// CHECK-NEXT: "col": 33,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1344,
+// CHECK-NEXT: "col": 33,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const S *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "s",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const S *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionTemplateDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1386,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 61,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 20
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1354,
+// CHECK-NEXT: "line": 60,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1607,
+// CHECK-NEXT: "line": 75,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestUnaryExpressions",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1376,
+// CHECK-NEXT: "line": 60,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1364,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1376,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "Ts",
+// CHECK-NEXT: "tagUsed": "typename",
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0,
+// CHECK-NEXT: "isParameterPack": true
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1386,
+// CHECK-NEXT: "line": 61,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 20
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1381,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1607,
+// CHECK-NEXT: "line": 75,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestUnaryExpressions",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (int *)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1412,
+// CHECK-NEXT: "line": 61,
+// CHECK-NEXT: "col": 32,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1407,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1412,
+// CHECK-NEXT: "col": 32,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "p",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "PointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1415,
+// CHECK-NEXT: "col": 35,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1607,
+// CHECK-NEXT: "line": 75,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "SizeOfPackExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1420,
+// CHECK-NEXT: "line": 62,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1432,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned long"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "name": "Ts"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXNoexceptExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1438,
+// CHECK-NEXT: "line": 63,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1452,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1447,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1451,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "long"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "-",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1447,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1447,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1447,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1447,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "p",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "nonOdrUseReason": "unevaluated",
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1451,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1451,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1451,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1451,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "p",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "nonOdrUseReason": "unevaluated",
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXNewExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1460,
+// CHECK-NEXT: "line": 65,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1466,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "isGlobal": true,
+// CHECK-NEXT: "operatorNewDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "name": "operator new",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *(unsigned long)"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXNewExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1474,
+// CHECK-NEXT: "line": 66,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1482,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "operatorNewDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "name": "operator new",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *(unsigned long)"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXNewExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1488,
+// CHECK-NEXT: "line": 67,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1498,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "initStyle": "list",
+// CHECK-NEXT: "operatorNewDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "name": "operator new",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *(unsigned long)"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "InitListExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1495,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1498,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1496,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1496,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "12"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXNewExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1504,
+// CHECK-NEXT: "line": 68,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1513,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "isArray": true,
+// CHECK-NEXT: "operatorNewDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "name": "operator new[]",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *(unsigned long)"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1512,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1512,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned long"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralCast",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1512,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1512,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "2"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXNewExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1519,
+// CHECK-NEXT: "line": 69,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1534,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "isArray": true,
+// CHECK-NEXT: "initStyle": "list",
+// CHECK-NEXT: "operatorNewDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "name": "operator new[]",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *(unsigned long)"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1527,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1527,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned long"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralCast",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1527,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1527,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "2"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "InitListExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1529,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1534,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int[2]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1530,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1530,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "1"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1533,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1533,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "2"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXNewExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1540,
+// CHECK-NEXT: "line": 70,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1548,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "isPlacement": true,
+// CHECK-NEXT: "operatorNewDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "name": "operator new",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *(std::size_t, void *)"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1545,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1545,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "BitCast",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1545,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1545,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1545,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1545,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "p",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXNewExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1556,
+// CHECK-NEXT: "line": 71,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1570,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "isPlacement": true,
+// CHECK-NEXT: "initStyle": "list",
+// CHECK-NEXT: "operatorNewDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "name": "operator new",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *(std::size_t, void *)"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "InitListExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1567,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1570,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1568,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1568,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "12"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1561,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1561,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "BitCast",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1561,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1561,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1561,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1561,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "p",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXDeleteExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1578,
+// CHECK-NEXT: "line": 73,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1587,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "isGlobal": true,
+// CHECK-NEXT: "operatorDeleteDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "name": "operator delete",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (void *, unsigned long) noexcept"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1587,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1587,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1587,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1587,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "p",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXDeleteExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1593,
+// CHECK-NEXT: "line": 74,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1603,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "isArray": true,
+// CHECK-NEXT: "isArrayAsWritten": true,
+// CHECK-NEXT: "operatorDeleteDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "name": "operator delete[]",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (void *) noexcept"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1603,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1603,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1603,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1603,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "p",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1617,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 77,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 22
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1612,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1896,
+// CHECK-NEXT: "line": 90,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestPostfixExpressions",
+// CHECK-NEXT: "mangledName": "_Z22TestPostfixExpressions1SPS_P1UIiE",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (S, S *, U<int> *)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1642,
+// CHECK-NEXT: "line": 77,
+// CHECK-NEXT: "col": 31,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1640,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1642,
+// CHECK-NEXT: "col": 31,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ElaboratedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1648,
+// CHECK-NEXT: "col": 37,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1645,
+// CHECK-NEXT: "col": 34,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1648,
+// CHECK-NEXT: "col": 37,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "p",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "PointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1659,
+// CHECK-NEXT: "col": 48,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1651,
+// CHECK-NEXT: "col": 40,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1659,
+// CHECK-NEXT: "col": 48,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "r",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "U<int> *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "PointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "U<int> *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ElaboratedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "U<int>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateSpecializationType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "U<int>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "templateName": "U",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "kind": "TemplateArgument",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "U<int>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ClassTemplateSpecializationDecl",
+// CHECK-NEXT: "name": "U"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1662,
+// CHECK-NEXT: "col": 51,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1896,
+// CHECK-NEXT: "line": 90,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMemberCallExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1667,
+// CHECK-NEXT: "line": 78,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1675,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "MemberExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1667,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1669,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<bound member function type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "name": "func",
+// CHECK-NEXT: "isArrow": false,
+// CHECK-NEXT: "referencedMemberDecl": "0x{{.*}}",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1667,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1667,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1674,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1674,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMemberCallExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1681,
+// CHECK-NEXT: "line": 79,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1690,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "MemberExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1681,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1684,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<bound member function type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "name": "func",
+// CHECK-NEXT: "isArrow": true,
+// CHECK-NEXT: "referencedMemberDecl": "0x{{.*}}",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1681,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1681,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1681,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1681,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "p",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1689,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1689,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMemberCallExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1696,
+// CHECK-NEXT: "line": 80,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1717,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "MemberExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1696,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1715,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<bound member function type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "name": "foo",
+// CHECK-NEXT: "isArrow": true,
+// CHECK-NEXT: "referencedMemberDecl": "0x{{.*}}",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1696,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1696,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1696,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1696,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "p",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMemberCallExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1723,
+// CHECK-NEXT: "line": 81,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1745,
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "float"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "MemberExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1723,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1743,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<bound member function type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "name": "foo",
+// CHECK-NEXT: "isArrow": false,
+// CHECK-NEXT: "referencedMemberDecl": "0x{{.*}}",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1723,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1723,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMemberCallExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1751,
+// CHECK-NEXT: "line": 82,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1757,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "MemberExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1751,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1755,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<bound member function type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "name": "~S",
+// CHECK-NEXT: "isArrow": true,
+// CHECK-NEXT: "referencedMemberDecl": "0x{{.*}}",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1751,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1751,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1751,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1751,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "p",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMemberCallExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1763,
+// CHECK-NEXT: "line": 83,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1768,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "MemberExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1763,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1766,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<bound member function type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "name": "~S",
+// CHECK-NEXT: "isArrow": false,
+// CHECK-NEXT: "referencedMemberDecl": "0x{{.*}}",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1763,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1763,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMemberCallExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1774,
+// CHECK-NEXT: "line": 84,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1789,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "MemberExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1774,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1776,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<bound member function type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "name": "~S",
+// CHECK-NEXT: "isArrow": false,
+// CHECK-NEXT: "referencedMemberDecl": "0x{{.*}}",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1774,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1774,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMemberCallExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1795,
+// CHECK-NEXT: "line": 85,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "MemberExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1795,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1804,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<bound member function type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "name": "~S",
+// CHECK-NEXT: "isArrow": true,
+// CHECK-NEXT: "referencedMemberDecl": "0x{{.*}}",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1795,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1795,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1795,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1795,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "p",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMemberCallExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1812,
+// CHECK-NEXT: "line": 86,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1835,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "MemberExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1812,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1833,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<bound member function type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "name": "~U",
+// CHECK-NEXT: "isArrow": true,
+// CHECK-NEXT: "referencedMemberDecl": "0x{{.*}}",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1812,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1812,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "U<int> *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1812,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1812,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "U<int> *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "r",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "U<int> *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXTypeidExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1841,
+// CHECK-NEXT: "line": 87,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1849,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const std::type_info"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1848,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1848,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXTypeidExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1855,
+// CHECK-NEXT: "line": 88,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1863,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const std::type_info"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "typeArg": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXTypeidExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1869,
+// CHECK-NEXT: "line": 89,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1892,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const std::type_info"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "typeArg": {
+// CHECK-NEXT: "qualType": "const volatile S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "adjustedTypeArg": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionTemplateDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1933,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 93,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 22
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1901,
+// CHECK-NEXT: "line": 92,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2378,
+// CHECK-NEXT: "line": 122,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestPrimaryExpressions",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1923,
+// CHECK-NEXT: "line": 92,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1911,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1923,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "Ts",
+// CHECK-NEXT: "tagUsed": "typename",
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0,
+// CHECK-NEXT: "isParameterPack": true
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1933,
+// CHECK-NEXT: "line": 93,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 22
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1928,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2378,
+// CHECK-NEXT: "line": 122,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestPrimaryExpressions",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (Ts...)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1962,
+// CHECK-NEXT: "line": 93,
+// CHECK-NEXT: "col": 35,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1956,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1962,
+// CHECK-NEXT: "col": 35,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Ts..."
+// CHECK-NEXT: },
+// CHECK-NEXT: "isParameterPack": true,
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "PackExpansionType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Ts..."
+// CHECK-NEXT: },
+// CHECK-NEXT: "isDependent": true,
+// CHECK-NEXT: "isInstantiationDependent": true,
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Ts"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isDependent": true,
+// CHECK-NEXT: "isInstantiationDependent": true,
+// CHECK-NEXT: "containsUnexpandedPack": true,
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0,
+// CHECK-NEXT: "isPack": true,
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "name": "Ts"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1965,
+// CHECK-NEXT: "col": 38,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2378,
+// CHECK-NEXT: "line": 122,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1970,
+// CHECK-NEXT: "line": 94,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2058,
+// CHECK-NEXT: "line": 101,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1977,
+// CHECK-NEXT: "line": 94,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1970,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2057,
+// CHECK-NEXT: "line": 101,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "V",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true,
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "isConstexpr": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1977,
+// CHECK-NEXT: "line": 94,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1970,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1977,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "V",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1991,
+// CHECK-NEXT: "line": 95,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1986,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2052,
+// CHECK-NEXT: "line": 100,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "f",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1995,
+// CHECK-NEXT: "line": 95,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2052,
+// CHECK-NEXT: "line": 100,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXThisExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2004,
+// CHECK-NEXT: "line": 96,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2004,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "V *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "LambdaExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2019,
+// CHECK-NEXT: "line": 98,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2026,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "(lambda at {{.*}}:98:7)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2019,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2019,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2019,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "tagUsed": "class",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {},
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "isLambda": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {},
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2019,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2024,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2026,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "operator()",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "auto () const -> auto"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2025,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2026,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2020,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2020,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2020,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "V *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "V *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "V"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParenListExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2020,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2020,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NULL TYPE"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXThisExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2020,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2020,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "V *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2025,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2026,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "LambdaExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2036,
+// CHECK-NEXT: "line": 99,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2044,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "(lambda at {{.*}}:99:7)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2036,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2036,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2036,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "tagUsed": "class",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "isLambda": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {},
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2036,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2042,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2044,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "operator()",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "auto () const -> auto"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2043,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2044,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2037,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2037,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2037,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "V"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParenListExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2037,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2037,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NULL TYPE"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UnaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2037,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2037,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "V"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "isPostfix": false,
+// CHECK-NEXT: "opcode": "*",
+// CHECK-NEXT: "canOverflow": false,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXThisExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2037,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2037,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "V *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2043,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2044,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2065,
+// CHECK-NEXT: "line": 103,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2073,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2069,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2065,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2069,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2072,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2065,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2072,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "c",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "LambdaExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2080,
+// CHECK-NEXT: "line": 105,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2085,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "(lambda at {{.*}}:105:3)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2080,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2080,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2080,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "tagUsed": "class",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLambda": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {},
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2080,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2083,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2085,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "operator()",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "auto () const"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2084,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2085,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXConversionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2080,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2080,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2085,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "operator auto (*)()",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "auto (*() const noexcept)()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "constexpr": true
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2080,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2080,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2085,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "__invoke",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "auto ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "storageClass": "static",
+// CHECK-NEXT: "inline": true
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2084,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2085,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "LambdaExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2091,
+// CHECK-NEXT: "line": 106,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2106,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "(lambda at {{.*}}:106:3)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2091,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2091,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2091,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "tagUsed": "class",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLambda": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {},
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2091,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2104,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2106,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "operator()",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "auto (int, ...) const"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "variadic": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2098,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2094,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2098,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2105,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2106,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXConversionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2091,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2091,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2106,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "operator auto (*)(int, ...)",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "auto (*() const noexcept)(int, ...)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "constexpr": true
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2091,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2091,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2106,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "__invoke",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "auto (int, ...)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "storageClass": "static",
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "variadic": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2098,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2094,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2098,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2105,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2106,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "LambdaExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2112,
+// CHECK-NEXT: "line": 107,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2119,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "(lambda at {{.*}}:107:3)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2112,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2112,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2112,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "tagUsed": "class",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {},
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "isLambda": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {},
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2112,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2117,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2119,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "operator()",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "auto () const -> auto"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2118,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2119,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2113,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2113,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2113,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Ts..."
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParenListExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2113,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2113,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NULL TYPE"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2113,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2113,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Ts"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Ts..."
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2118,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2119,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "LambdaExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2125,
+// CHECK-NEXT: "line": 108,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2129,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "(lambda at {{.*}}:108:3)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2125,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2125,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2125,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "tagUsed": "class",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLambda": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {},
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2125,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2127,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2129,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "operator()",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "auto () const -> auto"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2128,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2129,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2128,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2129,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "LambdaExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2135,
+// CHECK-NEXT: "line": 109,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2151,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "(lambda at {{.*}}:109:3)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2135,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2135,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2135,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "tagUsed": "class",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLambda": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {},
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2135,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2137,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2151,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "operator()",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "auto () const -> auto"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2139,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2151,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ReturnStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2141,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2148,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2148,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2148,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "const",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2139,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2151,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ReturnStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2141,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2148,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2148,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2148,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "LambdaExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2157,
+// CHECK-NEXT: "line": 110,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2161,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "(lambda at {{.*}}:110:3)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2157,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2157,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2157,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "tagUsed": "class",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLambda": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {},
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2157,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2159,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2161,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "operator()",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "auto () const -> auto"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2160,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2161,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2160,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2161,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "LambdaExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2167,
+// CHECK-NEXT: "line": 111,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2183,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "(lambda at {{.*}}:111:3)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2167,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2167,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2167,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "tagUsed": "class",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLambda": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {},
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2167,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2169,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2183,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "operator()",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "auto () const -> auto"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2171,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2183,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ReturnStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2173,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2180,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2180,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2180,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "c",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2171,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2183,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ReturnStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2173,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2180,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2180,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2180,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "c",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "LambdaExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2189,
+// CHECK-NEXT: "line": 112,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2212,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "(lambda at {{.*}}:112:3)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2189,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2189,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2189,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "tagUsed": "class",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {},
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "isLambda": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {},
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2189,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2195,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2212,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "operator()",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "auto () const -> auto"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2196,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2212,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ReturnStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2198,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2209,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2205,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2209,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "+",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2205,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2205,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2205,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2205,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2209,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2209,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2209,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2209,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "c",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2190,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2190,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2190,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2194,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2194,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2194,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2190,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2190,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2190,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2190,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2194,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2194,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "c",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2196,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2212,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ReturnStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2198,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2209,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2205,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2209,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "+",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2205,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2205,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2205,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2205,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2209,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2209,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2209,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2209,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "c",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "LambdaExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2218,
+// CHECK-NEXT: "line": 113,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2233,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "(lambda at {{.*}}:113:3)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2218,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2218,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2218,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "tagUsed": "class",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {},
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "isLambda": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {},
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2218,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2231,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2233,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "operator()",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "auto () const -> auto"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2232,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2233,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2219,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2219,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2219,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Ts..."
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2225,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2225,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2225,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParenListExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2219,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2219,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NULL TYPE"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2219,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2219,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Ts"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Ts..."
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2229,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2229,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "12"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2232,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2233,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "LambdaExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2239,
+// CHECK-NEXT: "line": 114,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2255,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "(lambda at {{.*}}:114:3)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2239,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2239,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2239,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "tagUsed": "class",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLambda": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {},
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2239,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2244,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 9
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2255,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "operator()",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "auto () const"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "constexpr": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2254,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2255,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXConversionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2239,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2239,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2255,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "operator auto (*)()",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "auto (*() const noexcept)()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "constexpr": true
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2239,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2239,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2255,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "__invoke",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "auto ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "storageClass": "static",
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "constexpr": true
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2254,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2255,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "LambdaExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2261,
+// CHECK-NEXT: "line": 115,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2275,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "(lambda at {{.*}}:115:3)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2261,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2261,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2261,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "tagUsed": "class",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLambda": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {},
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2261,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2266,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 7
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2275,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "operator()",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "auto ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2274,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2275,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXConversionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2261,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2261,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2275,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "operator auto (*)()",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "auto (*() const noexcept)()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "constexpr": true
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2261,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2261,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2275,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "__invoke",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "auto ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "storageClass": "static",
+// CHECK-NEXT: "inline": true
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2274,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2275,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "LambdaExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2281,
+// CHECK-NEXT: "line": 116,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2296,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "(lambda at {{.*}}:116:3)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2281,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2281,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2281,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "tagUsed": "class",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLambda": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {},
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2281,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2286,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2296,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "operator()",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "auto () const noexcept"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2295,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2296,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXConversionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2281,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2281,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2296,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "operator auto (*)() noexcept",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "auto (*() const noexcept)() noexcept"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "constexpr": true
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2281,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2281,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2296,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "__invoke",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "auto () noexcept"
+// CHECK-NEXT: },
+// CHECK-NEXT: "storageClass": "static",
+// CHECK-NEXT: "inline": true
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2295,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2296,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "LambdaExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2302,
+// CHECK-NEXT: "line": 117,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2326,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "(lambda at {{.*}}:117:3)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2302,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2302,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2302,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "tagUsed": "class",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLambda": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {},
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2302,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2310,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2326,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "operator()",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "auto () const -> int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2314,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2326,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ReturnStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2316,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2323,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2323,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2323,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXConversionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2302,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2302,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2326,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "operator int (*)()",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "auto (*() const noexcept)() -> int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "constexpr": true
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2302,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2302,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2326,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "__invoke",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "auto () -> int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "storageClass": "static",
+// CHECK-NEXT: "inline": true
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2314,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2326,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ReturnStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2316,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2323,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2323,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2323,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXFoldExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2334,
+// CHECK-NEXT: "line": 119,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2342,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<dependent type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {},
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2335,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2335,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Ts"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Ts..."
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {}
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXFoldExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2348,
+// CHECK-NEXT: "line": 120,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2356,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<dependent type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {},
+// CHECK-NEXT: {},
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2355,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2355,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Ts"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Ts..."
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXFoldExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2362,
+// CHECK-NEXT: "line": 121,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2374,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<dependent type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {},
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2363,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2363,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Ts"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Ts..."
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2373,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2373,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2465,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 130,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 11
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2460,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2512,
+// CHECK-NEXT: "line": 134,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestADLCall",
+// CHECK-NEXT: "mangledName": "_Z11TestADLCallv",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2479,
+// CHECK-NEXT: "line": 130,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2512,
+// CHECK-NEXT: "line": 134,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2484,
+// CHECK-NEXT: "line": 131,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2491,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2490,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2484,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2490,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NS::X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "call",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXConstructExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2490,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2490,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NS::X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "ctorType": {
+// CHECK-NEXT: "qualType": "void () noexcept"
+// CHECK-NEXT: },
+// CHECK-NEXT: "hadMultipleCandidates": true,
+// CHECK-NEXT: "constructionKind": "complete"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ElaboratedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NS::X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifier": "NS::",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NS::X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CallExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2496,
+// CHECK-NEXT: "line": 132,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2499,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "adl": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2496,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2496,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (*)(X)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "FunctionToPointerDecay",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2496,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2496,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (X)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "name": "f",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (X)"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (X)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXConstructExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2498,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2498,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "NS::X",
+// CHECK-NEXT: "qualType": "X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "ctorType": {
+// CHECK-NEXT: "qualType": "void (const X &) noexcept"
+// CHECK-NEXT: },
+// CHECK-NEXT: "hadMultipleCandidates": true,
+// CHECK-NEXT: "constructionKind": "complete",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2498,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2498,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "const NS::X",
+// CHECK-NEXT: "qualType": "const X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "castKind": "NoOp",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2498,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2498,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NS::X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NS::X"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CallExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2505,
+// CHECK-NEXT: "line": 133,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2508,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "adl": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2505,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2505,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (*)(...)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "FunctionToPointerDecay",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2505,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2505,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (...)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "name": "y",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (...)"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (...)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXConstructExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2507,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2507,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NS::X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "ctorType": {
+// CHECK-NEXT: "qualType": "void (const X &) noexcept"
+// CHECK-NEXT: },
+// CHECK-NEXT: "hadMultipleCandidates": true,
+// CHECK-NEXT: "constructionKind": "complete",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2507,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2507,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "const NS::X",
+// CHECK-NEXT: "qualType": "const X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "castKind": "NoOp",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2507,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2507,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NS::X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NS::X"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2522,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 136,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 14
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2517,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2567,
+// CHECK-NEXT: "line": 139,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestNonADLCall",
+// CHECK-NEXT: "mangledName": "_Z14TestNonADLCallv",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2539,
+// CHECK-NEXT: "line": 136,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2567,
+// CHECK-NEXT: "line": 139,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2544,
+// CHECK-NEXT: "line": 137,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2551,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2550,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2544,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2550,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NS::X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "call",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXConstructExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2550,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2550,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NS::X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "ctorType": {
+// CHECK-NEXT: "qualType": "void () noexcept"
+// CHECK-NEXT: },
+// CHECK-NEXT: "hadMultipleCandidates": true,
+// CHECK-NEXT: "constructionKind": "complete"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ElaboratedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NS::X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifier": "NS::",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NS::X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CallExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2556,
+// CHECK-NEXT: "line": 138,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2563,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2556,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2560,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (*)(X)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "FunctionToPointerDecay",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2556,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2560,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (X)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "name": "f",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (X)"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (X)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXConstructExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2562,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2562,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "NS::X",
+// CHECK-NEXT: "qualType": "X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "ctorType": {
+// CHECK-NEXT: "qualType": "void (const X &) noexcept"
+// CHECK-NEXT: },
+// CHECK-NEXT: "hadMultipleCandidates": true,
+// CHECK-NEXT: "constructionKind": "complete",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2562,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2562,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "const NS::X",
+// CHECK-NEXT: "qualType": "const X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "castKind": "NoOp",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2562,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2562,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NS::X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NS::X"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2577,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 141,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 15
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2572,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2644,
+// CHECK-NEXT: "line": 146,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestNonADLCall2",
+// CHECK-NEXT: "mangledName": "_Z15TestNonADLCall2v",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2595,
+// CHECK-NEXT: "line": 141,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2644,
+// CHECK-NEXT: "line": 146,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2600,
+// CHECK-NEXT: "line": 142,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2607,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2606,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2600,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2606,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NS::X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "call",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXConstructExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2606,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2606,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NS::X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "ctorType": {
+// CHECK-NEXT: "qualType": "void () noexcept"
+// CHECK-NEXT: },
+// CHECK-NEXT: "hadMultipleCandidates": true,
+// CHECK-NEXT: "constructionKind": "complete"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ElaboratedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NS::X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifier": "NS::",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NS::X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2612,
+// CHECK-NEXT: "line": 143,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2623,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UsingDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2622,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2612,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2622,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "NS::f"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CallExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2628,
+// CHECK-NEXT: "line": 144,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2631,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2628,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2628,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (*)(X)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "FunctionToPointerDecay",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2628,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2628,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (X)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "name": "f",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (X)"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "foundReferencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UsingShadowDecl",
+// CHECK-NEXT: "name": "f"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (X)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXConstructExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2630,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2630,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "NS::X",
+// CHECK-NEXT: "qualType": "X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "ctorType": {
+// CHECK-NEXT: "qualType": "void (const X &) noexcept"
+// CHECK-NEXT: },
+// CHECK-NEXT: "hadMultipleCandidates": true,
+// CHECK-NEXT: "constructionKind": "complete",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2630,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2630,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "const NS::X",
+// CHECK-NEXT: "qualType": "const X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "castKind": "NoOp",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2630,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2630,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NS::X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NS::X"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CallExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2637,
+// CHECK-NEXT: "line": 145,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2640,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "adl": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2637,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2637,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (*)(...)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "FunctionToPointerDecay",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2637,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2637,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (...)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "name": "y",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (...)"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (...)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXConstructExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2639,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2639,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NS::X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "ctorType": {
+// CHECK-NEXT: "qualType": "void (const X &) noexcept"
+// CHECK-NEXT: },
+// CHECK-NEXT: "hadMultipleCandidates": true,
+// CHECK-NEXT: "constructionKind": "complete",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2639,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2639,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "const NS::X",
+// CHECK-NEXT: "qualType": "const X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "castKind": "NoOp",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2639,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2639,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NS::X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NS::X"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2708,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 150,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 15
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2703,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2746,
+// CHECK-NEXT: "line": 153,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestNonADLCall3",
+// CHECK-NEXT: "mangledName": "_ZN19test_adl_call_three15TestNonADLCall3Ev",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2726,
+// CHECK-NEXT: "line": 150,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2746,
+// CHECK-NEXT: "line": 153,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2731,
+// CHECK-NEXT: "line": 151,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2734,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2733,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2731,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2733,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "NS::X",
+// CHECK-NEXT: "qualType": "X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "call",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXConstructExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2733,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2733,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "NS::X",
+// CHECK-NEXT: "qualType": "X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "ctorType": {
+// CHECK-NEXT: "qualType": "void () noexcept"
+// CHECK-NEXT: },
+// CHECK-NEXT: "hadMultipleCandidates": true,
+// CHECK-NEXT: "constructionKind": "complete"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ElaboratedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NS::X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CallExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2739,
+// CHECK-NEXT: "line": 152,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2742,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2739,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2739,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (*)(X)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "FunctionToPointerDecay",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2739,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2739,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (X)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "name": "f",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (X)"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (X)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXConstructExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2741,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2741,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "NS::X",
+// CHECK-NEXT: "qualType": "X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "ctorType": {
+// CHECK-NEXT: "qualType": "void (const X &) noexcept"
+// CHECK-NEXT: },
+// CHECK-NEXT: "hadMultipleCandidates": true,
+// CHECK-NEXT: "constructionKind": "complete",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2741,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2741,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "const NS::X",
+// CHECK-NEXT: "qualType": "const X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "castKind": "NoOp",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2741,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2741,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "NS::X",
+// CHECK-NEXT: "qualType": "X"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "NS::X",
+// CHECK-NEXT: "qualType": "X"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
diff --git a/clang/test/AST/ast-dump-expr-json.m b/clang/test/AST/ast-dump-expr-json.m
index 3c502c0496308..c304e77afa832 100644
--- a/clang/test/AST/ast-dump-expr-json.m
+++ b/clang/test/AST/ast-dump-expr-json.m
@@ -1,5048 +1,5409 @@
-// RUN: %clang_cc1 -triple x86_64-pc-win32 -Wno-unused -fblocks -ast-dump=json -ast-dump-filter Test %s | FileCheck %s
-
-typedef long NSInteger;
-typedef unsigned long NSUInteger;
-typedef signed char BOOL;
-
- at interface NSNumber
- at end
- at interface NSNumber (NSNumberCreation)
-+ (NSNumber *)numberWithChar:(char)value;
-+ (NSNumber *)numberWithUnsignedChar:(unsigned char)value;
-+ (NSNumber *)numberWithShort:(short)value;
-+ (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
-+ (NSNumber *)numberWithInt:(int)value;
-+ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
-+ (NSNumber *)numberWithLong:(long)value;
-+ (NSNumber *)numberWithUnsignedLong:(unsigned long)value;
-+ (NSNumber *)numberWithLongLong:(long long)value;
-+ (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;
-+ (NSNumber *)numberWithFloat:(float)value;
-+ (NSNumber *)numberWithDouble:(double)value;
-+ (NSNumber *)numberWithBool:(BOOL)value;
-+ (NSNumber *)numberWithInteger:(NSInteger)value;
-+ (NSNumber *)numberWithUnsignedInteger:(NSUInteger)value;
- at end
-
- at interface I
-{
- at public
- int public;
-}
-- (int) conformsToProtocol : (Protocol *)protocl;
-- (void)method1;
-+ (void)method2;
- at end
-
- at interface J
- at property unsigned prop;
- at end
-
- at protocol Proto
- at end
-
- at interface NSMutableDictionary
-- (id)objectForKeyedSubscript:(id)key;
-- (void)setObject:(id)object forKeyedSubscript:(id)key;
- at end
-
- at interface NSMutableArray
-- (id)objectAtIndexedSubscript:(int)index;
-- (void)setObject:(id)object atIndexedSubscript:(int)index;
- at end
-
-void TestObjCEncode(void) {
- @encode(int);
- @encode(typeof(^{;}));
-}
-
-void TestObjCMessage(I *Obj) {
- [Obj method1];
- [I method2];
-}
-
-void TestObjCBoxed(void) {
- @(1 + 1);
-}
-
-void TestObjCSelector(void) {
- SEL s = @selector(dealloc);
-}
-
-void TestObjCProtocol(id Obj) {
- [Obj conformsToProtocol:@protocol(Proto)];
-}
-
-void TestObjCPropertyRef(J *Obj) {
- Obj.prop = 12;
- int i = Obj.prop;
-}
-
-void TestObjCSubscriptRef(NSMutableArray *Array, NSMutableDictionary *Dict) {
- Array[0] = (void*)0;
- id i = Array[0];
-
- Dict[@"key"] = (void*)0;
- i = Dict[@"key"];
-}
-
-void TestObjCIVarRef(I *Ptr) {
- Ptr->public = 0;
-}
-
-void TestObjCBoolLiteral(void) {
- __objc_yes;
- __objc_no;
-}
-
-// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 54,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 14
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 57,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestObjCEncode",
-// CHECK-NEXT: "mangledName": "TestObjCEncode",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (void)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 54,
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 57,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 55,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "ArrayToPointerDecay",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCEncodeExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char[2]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "encodedType": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 56,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "ArrayToPointerDecay",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCEncodeExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char[3]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "encodedType": {
-// CHECK-NEXT: "desugaredQualType": "void (^)(void)",
-// CHECK-NEXT: "qualType": "typeof (^{ })"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 59,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 15
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 62,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestObjCMessage",
-// CHECK-NEXT: "mangledName": "TestObjCMessage",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (I *)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 59,
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "Obj",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "I *"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 30,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 62,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCMessageExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 60,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "selector": "method1",
-// CHECK-NEXT: "receiverKind": "instance",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "I *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "I *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "Obj",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "I *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCMessageExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 61,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "selector": "method2",
-// CHECK-NEXT: "receiverKind": "class",
-// CHECK-NEXT: "classType": {
-// CHECK-NEXT: "qualType": "I"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 64,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 66,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestObjCBoxed",
-// CHECK-NEXT: "mangledName": "TestObjCBoxed",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (void)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 64,
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 66,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCBoxedExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 65,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSNumber *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "selector": "numberWithInt:",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParenExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "+",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "1"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "1"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 68,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 16
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 70,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestObjCSelector",
-// CHECK-NEXT: "mangledName": "TestObjCSelector",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (void)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 68,
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 70,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 69,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 28,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "s",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "SEL *",
-// CHECK-NEXT: "qualType": "SEL",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCSelectorExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 28,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "SEL *",
-// CHECK-NEXT: "qualType": "SEL",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "selector": "dealloc"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 72,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 16
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 74,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestObjCProtocol",
-// CHECK-NEXT: "mangledName": "TestObjCProtocol",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (id)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 72,
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "Obj",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "id",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 31,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 74,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCMessageExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 73,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 43,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "selector": "conformsToProtocol:",
-// CHECK-NEXT: "receiverKind": "instance",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "id",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "id",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "Obj",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "id",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCProtocolExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 42,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Protocol *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "protocol": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCProtocolDecl",
-// CHECK-NEXT: "name": "Proto"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 76,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 79,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestObjCPropertyRef",
-// CHECK-NEXT: "mangledName": "TestObjCPropertyRef",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (J *)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 76,
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "Obj",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "J *"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 34,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 79,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "PseudoObjectExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 77,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "=",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCPropertyRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<pseudo-object type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "propertyKind": "explicit",
-// CHECK-NEXT: "property": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCPropertyDecl",
-// CHECK-NEXT: "name": "prop"
-// CHECK-NEXT: },
-// CHECK-NEXT: "isMessagingSetter": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "J *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "J *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "J *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "Obj",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "J *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "12"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "J *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "J *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "J *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "Obj",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "J *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "12"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralCast",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "12"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCMessageExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "selector": "setProp:",
-// CHECK-NEXT: "receiverKind": "instance",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "J *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "J *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "J *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "Obj",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "J *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralCast",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "12"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 78,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralCast",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "PseudoObjectExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCPropertyRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<pseudo-object type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "propertyKind": "explicit",
-// CHECK-NEXT: "property": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCPropertyDecl",
-// CHECK-NEXT: "name": "prop"
-// CHECK-NEXT: },
-// CHECK-NEXT: "isMessagingGetter": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "J *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "J *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "J *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "Obj",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "J *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "J *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "J *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "J *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "Obj",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "J *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCMessageExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "selector": "prop",
-// CHECK-NEXT: "receiverKind": "instance",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "J *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "J *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "J *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "Obj",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "J *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 81,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 20
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 87,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestObjCSubscriptRef",
-// CHECK-NEXT: "mangledName": "TestObjCSubscriptRef",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (NSMutableArray *, NSMutableDictionary *)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 81,
-// CHECK-NEXT: "col": 43,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 14
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 43,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "Array",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableArray *"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 71,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 50,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 71,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "Dict",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableDictionary *"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 77,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 87,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "PseudoObjectExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 82,
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "id",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "=",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCSubscriptRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<pseudo-object type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "subscriptKind": "array",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableArray *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableArray *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableArray *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "Array",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableArray *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CStyleCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "NullToPointer",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableArray *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableArray *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableArray *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "Array",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableArray *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CStyleCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "NullToPointer",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "id",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "id",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "NullToPointer",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CStyleCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "NullToPointer",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCMessageExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "selector": "setObject:atIndexedSubscript:",
-// CHECK-NEXT: "receiverKind": "instance",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableArray *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableArray *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableArray *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "Array",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableArray *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "id",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "id",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "NullToPointer",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CStyleCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "NullToPointer",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 83,
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "id",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "PseudoObjectExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "id",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCSubscriptRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<pseudo-object type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "subscriptKind": "array",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableArray *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableArray *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableArray *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "Array",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableArray *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableArray *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableArray *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableArray *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "Array",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableArray *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCMessageExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "id",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "selector": "objectAtIndexedSubscript:",
-// CHECK-NEXT: "receiverKind": "instance",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableArray *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableArray *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableArray *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "Array",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableArray *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "PseudoObjectExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 85,
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "id",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "=",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCSubscriptRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<pseudo-object type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "subscriptKind": "dictionary",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableDictionary *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableDictionary *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableDictionary *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "Dict",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableDictionary *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSString *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCStringLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSString *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "StringLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char[4]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "value": "\"key\""
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CStyleCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "NullToPointer",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableDictionary *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableDictionary *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableDictionary *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "Dict",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableDictionary *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSString *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCStringLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSString *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "StringLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char[4]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "value": "\"key\""
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CStyleCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "NullToPointer",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "id",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "id",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "NullToPointer",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CStyleCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "NullToPointer",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCMessageExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "selector": "setObject:forKeyedSubscript:",
-// CHECK-NEXT: "receiverKind": "instance",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableDictionary *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableDictionary *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableDictionary *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "Dict",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableDictionary *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "id",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "id",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "NullToPointer",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CStyleCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "NullToPointer",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "id",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "BitCast",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSString *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCStringLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSString *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "StringLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char[4]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "value": "\"key\""
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 86,
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "id",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "=",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 2,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "id",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "id",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "PseudoObjectExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "id",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCSubscriptRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<pseudo-object type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "subscriptKind": "dictionary",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableDictionary *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableDictionary *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableDictionary *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "Dict",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableDictionary *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSString *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCStringLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSString *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "StringLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char[4]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "value": "\"key\""
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableDictionary *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableDictionary *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableDictionary *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "Dict",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableDictionary *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSString *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCStringLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSString *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "StringLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char[4]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "value": "\"key\""
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCMessageExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "id",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "selector": "objectForKeyedSubscript:",
-// CHECK-NEXT: "receiverKind": "instance",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableDictionary *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableDictionary *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableDictionary *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "Dict",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSMutableDictionary *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "id",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "BitCast",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSString *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCStringLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NSString *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "StringLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char[4]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "value": "\"key\""
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 89,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 15
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 91,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestObjCIVarRef",
-// CHECK-NEXT: "mangledName": "TestObjCIVarRef",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (I *)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 89,
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "Ptr",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "I *"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 30,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 91,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 90,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "=",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCIvarRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "decl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCIvarDecl",
-// CHECK-NEXT: "name": "public",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isArrow": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "I *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "I *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "Ptr",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "I *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 93,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 96,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestObjCBoolLiteral",
-// CHECK-NEXT: "mangledName": "TestObjCBoolLiteral",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (void)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 93,
-// CHECK-NEXT: "col": 32,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 96,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCBoolLiteralExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 94,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "signed char",
-// CHECK-NEXT: "qualType": "BOOL",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "__objc_yes"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCBoolLiteralExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 95,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 9
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 9
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "signed char",
-// CHECK-NEXT: "qualType": "BOOL",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "__objc_no"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
+// RUN: %clang_cc1 -triple x86_64-pc-win32 -Wno-unused -fblocks -ast-dump=json -ast-dump-filter Test %s | FileCheck %s
+
+typedef long NSInteger;
+typedef unsigned long NSUInteger;
+typedef signed char BOOL;
+
+ at interface NSNumber
+ at end
+ at interface NSNumber (NSNumberCreation)
++ (NSNumber *)numberWithChar:(char)value;
++ (NSNumber *)numberWithUnsignedChar:(unsigned char)value;
++ (NSNumber *)numberWithShort:(short)value;
++ (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
++ (NSNumber *)numberWithInt:(int)value;
++ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
++ (NSNumber *)numberWithLong:(long)value;
++ (NSNumber *)numberWithUnsignedLong:(unsigned long)value;
++ (NSNumber *)numberWithLongLong:(long long)value;
++ (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;
++ (NSNumber *)numberWithFloat:(float)value;
++ (NSNumber *)numberWithDouble:(double)value;
++ (NSNumber *)numberWithBool:(BOOL)value;
++ (NSNumber *)numberWithInteger:(NSInteger)value;
++ (NSNumber *)numberWithUnsignedInteger:(NSUInteger)value;
+ at end
+
+ at interface I
+{
+ at public
+ int public;
+}
+- (int) conformsToProtocol : (Protocol *)protocl;
+- (void)method1;
++ (void)method2;
+ at end
+
+ at interface J
+ at property unsigned prop;
+ at end
+
+ at protocol Proto
+ at end
+
+ at interface NSMutableDictionary
+- (id)objectForKeyedSubscript:(id)key;
+- (void)setObject:(id)object forKeyedSubscript:(id)key;
+ at end
+
+ at interface NSMutableArray
+- (id)objectAtIndexedSubscript:(int)index;
+- (void)setObject:(id)object atIndexedSubscript:(int)index;
+ at end
+
+void TestObjCEncode(void) {
+ @encode(int);
+ @encode(typeof(^{;}));
+}
+
+void TestObjCMessage(I *Obj) {
+ [Obj method1];
+ [I method2];
+}
+
+void TestObjCBoxed(void) {
+ @(1 + 1);
+}
+
+void TestObjCSelector(void) {
+ SEL s = @selector(dealloc);
+}
+
+void TestObjCProtocol(id Obj) {
+ [Obj conformsToProtocol:@protocol(Proto)];
+}
+
+void TestObjCPropertyRef(J *Obj) {
+ Obj.prop = 12;
+ int i = Obj.prop;
+}
+
+void TestObjCSubscriptRef(NSMutableArray *Array, NSMutableDictionary *Dict) {
+ Array[0] = (void*)0;
+ id i = Array[0];
+
+ Dict[@"key"] = (void*)0;
+ i = Dict[@"key"];
+}
+
+void TestObjCIVarRef(I *Ptr) {
+ Ptr->public = 0;
+}
+
+void TestObjCBoolLiteral(void) {
+ __objc_yes;
+ __objc_no;
+}
+
+// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1559,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 54,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 14
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1554,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1626,
+// CHECK-NEXT: "line": 57,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestObjCEncode",
+// CHECK-NEXT: "mangledName": "TestObjCEncode",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (void)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1580,
+// CHECK-NEXT: "line": 54,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1626,
+// CHECK-NEXT: "line": 57,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1585,
+// CHECK-NEXT: "line": 55,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1596,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "ArrayToPointerDecay",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCEncodeExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1585,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1596,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char[2]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "encodedType": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1602,
+// CHECK-NEXT: "line": 56,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1622,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "ArrayToPointerDecay",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCEncodeExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1602,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1622,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char[3]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "encodedType": {
+// CHECK-NEXT: "desugaredQualType": "void (^)(void)",
+// CHECK-NEXT: "qualType": "typeof (^{ })"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1636,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 59,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 15
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1631,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1697,
+// CHECK-NEXT: "line": 62,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestObjCMessage",
+// CHECK-NEXT: "mangledName": "TestObjCMessage",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (I *)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1655,
+// CHECK-NEXT: "line": 59,
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1652,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1655,
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "Obj",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "I *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCObjectPointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "I *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCInterfaceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "I"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCInterfaceDecl",
+// CHECK-NEXT: "name": "I"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1660,
+// CHECK-NEXT: "col": 30,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1697,
+// CHECK-NEXT: "line": 62,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCMessageExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1665,
+// CHECK-NEXT: "line": 60,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1677,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "selector": "method1",
+// CHECK-NEXT: "receiverKind": "instance",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1666,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1666,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "I *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1666,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1666,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "I *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "Obj",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "I *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCMessageExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1683,
+// CHECK-NEXT: "line": 61,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1693,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "selector": "method2",
+// CHECK-NEXT: "receiverKind": "class",
+// CHECK-NEXT: "classType": {
+// CHECK-NEXT: "qualType": "I"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1707,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 64,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1702,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1743,
+// CHECK-NEXT: "line": 66,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestObjCBoxed",
+// CHECK-NEXT: "mangledName": "TestObjCBoxed",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (void)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1727,
+// CHECK-NEXT: "line": 64,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1743,
+// CHECK-NEXT: "line": 66,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCBoxedExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1732,
+// CHECK-NEXT: "line": 65,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1739,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSNumber *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "selector": "numberWithInt:",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParenExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1733,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1739,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1734,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1738,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "+",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1734,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1734,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "1"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1738,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1738,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "1"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1753,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 68,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 16
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1748,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1810,
+// CHECK-NEXT: "line": 70,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestObjCSelector",
+// CHECK-NEXT: "mangledName": "TestObjCSelector",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (void)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1776,
+// CHECK-NEXT: "line": 68,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1810,
+// CHECK-NEXT: "line": 70,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1781,
+// CHECK-NEXT: "line": 69,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1807,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1785,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1781,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 28,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "s",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "SEL *",
+// CHECK-NEXT: "qualType": "SEL",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCSelectorExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1789,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 28,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "SEL *",
+// CHECK-NEXT: "qualType": "SEL",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "selector": "dealloc"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ElaboratedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "SEL"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "SEL"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefDecl",
+// CHECK-NEXT: "name": "SEL"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "PointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "SEL *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "SEL"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1820,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 72,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 16
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1815,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1894,
+// CHECK-NEXT: "line": 74,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestObjCProtocol",
+// CHECK-NEXT: "mangledName": "TestObjCProtocol",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (id)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1840,
+// CHECK-NEXT: "line": 72,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1837,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1840,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "Obj",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "id",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ElaboratedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "id"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "id"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefDecl",
+// CHECK-NEXT: "name": "id"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCObjectPointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "id"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCObjectType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "id"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1845,
+// CHECK-NEXT: "col": 31,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1894,
+// CHECK-NEXT: "line": 74,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCMessageExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1850,
+// CHECK-NEXT: "line": 73,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1890,
+// CHECK-NEXT: "col": 43,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "selector": "conformsToProtocol:",
+// CHECK-NEXT: "receiverKind": "instance",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1851,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1851,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "id",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1851,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1851,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "id",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "Obj",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "id",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCProtocolExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1874,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1889,
+// CHECK-NEXT: "col": 42,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Protocol *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "protocol": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCProtocolDecl",
+// CHECK-NEXT: "name": "Proto"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1904,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 76,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1899,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1974,
+// CHECK-NEXT: "line": 79,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestObjCPropertyRef",
+// CHECK-NEXT: "mangledName": "TestObjCPropertyRef",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (J *)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1927,
+// CHECK-NEXT: "line": 76,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1924,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1927,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "Obj",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "J *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCObjectPointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "J *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCInterfaceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "J"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCInterfaceDecl",
+// CHECK-NEXT: "name": "J"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1932,
+// CHECK-NEXT: "col": 34,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1974,
+// CHECK-NEXT: "line": 79,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "PseudoObjectExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1937,
+// CHECK-NEXT: "line": 77,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1948,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1937,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1948,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "=",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCPropertyRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1937,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1941,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<pseudo-object type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "propertyKind": "explicit",
+// CHECK-NEXT: "property": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCPropertyDecl",
+// CHECK-NEXT: "name": "prop"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isMessagingSetter": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1937,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1937,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "J *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1937,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1937,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "J *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1937,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1937,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "J *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "Obj",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "J *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1948,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1948,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1948,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1948,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "12"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1937,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1937,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "J *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1937,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1937,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "J *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1937,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1937,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "J *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "Obj",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "J *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1948,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1948,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1948,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1948,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "12"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1948,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1948,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1948,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1948,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralCast",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1948,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1948,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1948,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1948,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "12"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCMessageExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1941,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1941,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "selector": "setProp:",
+// CHECK-NEXT: "receiverKind": "instance",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1937,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1937,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "J *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1937,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1937,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "J *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1937,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1937,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "J *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "Obj",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "J *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1948,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1948,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1948,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1948,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralCast",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1948,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1948,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1948,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1948,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "12"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1955,
+// CHECK-NEXT: "line": 78,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1971,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1959,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1955,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1967,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1963,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1967,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralCast",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "PseudoObjectExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1963,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1967,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCPropertyRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1963,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1967,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<pseudo-object type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "propertyKind": "explicit",
+// CHECK-NEXT: "property": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCPropertyDecl",
+// CHECK-NEXT: "name": "prop"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isMessagingGetter": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1963,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1963,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "J *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1963,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1963,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "J *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1963,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1963,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "J *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "Obj",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "J *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1963,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1963,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "J *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1963,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1963,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "J *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1963,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1963,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "J *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "Obj",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "J *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCMessageExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1967,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1967,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "selector": "prop",
+// CHECK-NEXT: "receiverKind": "instance",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1963,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1963,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "J *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1963,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1963,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "J *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1963,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1963,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "J *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "Obj",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "J *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1984,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 81,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 20
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1979,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2150,
+// CHECK-NEXT: "line": 87,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestObjCSubscriptRef",
+// CHECK-NEXT: "mangledName": "TestObjCSubscriptRef",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (NSMutableArray *, NSMutableDictionary *)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2021,
+// CHECK-NEXT: "line": 81,
+// CHECK-NEXT: "col": 43,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2005,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 14
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2021,
+// CHECK-NEXT: "col": 43,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "Array",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableArray *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCObjectPointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableArray *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCInterfaceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableArray"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCInterfaceDecl",
+// CHECK-NEXT: "name": "NSMutableArray"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2049,
+// CHECK-NEXT: "col": 71,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2028,
+// CHECK-NEXT: "col": 50,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2049,
+// CHECK-NEXT: "col": 71,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "Dict",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableDictionary *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCObjectPointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableDictionary *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCInterfaceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableDictionary"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCInterfaceDecl",
+// CHECK-NEXT: "name": "NSMutableDictionary"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2055,
+// CHECK-NEXT: "col": 77,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2150,
+// CHECK-NEXT: "line": 87,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "PseudoObjectExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2059,
+// CHECK-NEXT: "line": 82,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2077,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "id",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2059,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2077,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "=",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCSubscriptRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2059,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2066,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<pseudo-object type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "subscriptKind": "array",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2059,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2059,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableArray *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2059,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2059,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableArray *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2059,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2059,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableArray *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "Array",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableArray *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2065,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2065,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2065,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2065,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2070,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2077,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CStyleCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2070,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2077,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "NullToPointer",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2077,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2077,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2059,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2059,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableArray *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2059,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2059,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableArray *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2059,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2059,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableArray *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "Array",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableArray *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2065,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2065,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2065,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2065,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2070,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2077,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CStyleCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2070,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2077,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "NullToPointer",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2077,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2077,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2070,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2077,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "id",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2070,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2077,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "id",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "NullToPointer",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2070,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2077,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CStyleCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2070,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2077,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "NullToPointer",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2077,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2077,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCMessageExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2059,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2059,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "selector": "setObject:atIndexedSubscript:",
+// CHECK-NEXT: "receiverKind": "instance",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2059,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2059,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableArray *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2059,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2059,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableArray *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2059,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2059,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableArray *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "Array",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableArray *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2070,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2077,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "id",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2070,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2077,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "id",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "NullToPointer",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2070,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2077,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CStyleCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2070,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2077,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "NullToPointer",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2077,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2077,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2065,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2065,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2065,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2065,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2082,
+// CHECK-NEXT: "line": 83,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2097,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2085,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2082,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2096,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "id",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "PseudoObjectExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2089,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2096,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "id",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCSubscriptRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2089,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2096,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<pseudo-object type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "subscriptKind": "array",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2089,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2089,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableArray *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2089,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2089,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableArray *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2089,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2089,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableArray *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "Array",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableArray *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2095,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2095,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2095,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2095,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2089,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2089,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableArray *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2089,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2089,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableArray *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2089,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2089,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableArray *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "Array",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableArray *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2095,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2095,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2095,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2095,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCMessageExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2089,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2089,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "id",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "selector": "objectAtIndexedSubscript:",
+// CHECK-NEXT: "receiverKind": "instance",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2089,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2089,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableArray *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2089,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2089,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableArray *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2089,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2089,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableArray *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "Array",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableArray *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2095,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2095,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2095,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2095,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ElaboratedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "id"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "id"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefDecl",
+// CHECK-NEXT: "name": "id"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCObjectPointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "id"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCObjectType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "id"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "PseudoObjectExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2104,
+// CHECK-NEXT: "line": 85,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2126,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "id",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2104,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2126,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "=",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCSubscriptRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2104,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2115,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<pseudo-object type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "subscriptKind": "dictionary",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2104,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2104,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableDictionary *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2104,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2104,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableDictionary *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2104,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2104,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableDictionary *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "Dict",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableDictionary *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2109,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2110,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSString *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCStringLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2109,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2110,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSString *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "StringLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2110,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2110,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char[4]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "value": "\"key\""
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2119,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2126,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CStyleCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2119,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2126,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "NullToPointer",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2126,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2126,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2104,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2104,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableDictionary *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2104,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2104,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableDictionary *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2104,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2104,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableDictionary *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "Dict",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableDictionary *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2109,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2110,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSString *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCStringLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2109,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2110,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSString *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "StringLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2110,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2110,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char[4]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "value": "\"key\""
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2119,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2126,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CStyleCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2119,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2126,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "NullToPointer",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2126,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2126,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2119,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2126,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "id",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2119,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2126,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "id",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "NullToPointer",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2119,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2126,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CStyleCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2119,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2126,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "NullToPointer",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2126,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2126,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCMessageExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2104,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2104,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "selector": "setObject:forKeyedSubscript:",
+// CHECK-NEXT: "receiverKind": "instance",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2104,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2104,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableDictionary *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2104,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2104,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableDictionary *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2104,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2104,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableDictionary *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "Dict",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableDictionary *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2119,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2126,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "id",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2119,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2126,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "id",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "NullToPointer",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2119,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2126,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CStyleCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2119,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2126,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "NullToPointer",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2126,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2126,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2109,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2110,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "id",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "BitCast",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2109,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2110,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSString *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCStringLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2109,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2110,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSString *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "StringLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2110,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2110,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char[4]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "value": "\"key\""
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2131,
+// CHECK-NEXT: "line": 86,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2146,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "id",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "=",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2131,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2131,
+// CHECK-NEXT: "col": 2,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "id",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "id",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "PseudoObjectExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2135,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2146,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "id",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCSubscriptRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2135,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2146,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<pseudo-object type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "subscriptKind": "dictionary",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2135,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2135,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableDictionary *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2135,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2135,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableDictionary *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2135,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2135,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableDictionary *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "Dict",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableDictionary *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2140,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2141,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSString *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCStringLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2140,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2141,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSString *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "StringLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2141,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2141,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char[4]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "value": "\"key\""
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2135,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2135,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableDictionary *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2135,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2135,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableDictionary *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2135,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2135,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableDictionary *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "Dict",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableDictionary *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2140,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2141,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSString *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCStringLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2140,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2141,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSString *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "StringLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2141,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2141,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char[4]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "value": "\"key\""
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCMessageExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2135,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2135,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "id",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "selector": "objectForKeyedSubscript:",
+// CHECK-NEXT: "receiverKind": "instance",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2135,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2135,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableDictionary *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2135,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2135,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableDictionary *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2135,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2135,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableDictionary *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "Dict",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSMutableDictionary *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2140,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2141,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "id",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "BitCast",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2140,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2141,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSString *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCStringLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2140,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2141,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NSString *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "StringLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2141,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2141,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char[4]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "value": "\"key\""
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2160,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 89,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 15
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2155,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2207,
+// CHECK-NEXT: "line": 91,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestObjCIVarRef",
+// CHECK-NEXT: "mangledName": "TestObjCIVarRef",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (I *)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2179,
+// CHECK-NEXT: "line": 89,
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2176,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2179,
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "Ptr",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "I *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCObjectPointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "I *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCInterfaceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "I"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCInterfaceDecl",
+// CHECK-NEXT: "name": "I"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2184,
+// CHECK-NEXT: "col": 30,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2207,
+// CHECK-NEXT: "line": 91,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2189,
+// CHECK-NEXT: "line": 90,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2203,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "=",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCIvarRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2189,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2194,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCIvarDecl",
+// CHECK-NEXT: "name": "public",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isArrow": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2189,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2189,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "I *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2189,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2189,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "I *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "Ptr",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "I *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2203,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2203,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 2217,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 93,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2212,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2275,
+// CHECK-NEXT: "line": 96,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestObjCBoolLiteral",
+// CHECK-NEXT: "mangledName": "TestObjCBoolLiteral",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (void)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2243,
+// CHECK-NEXT: "line": 93,
+// CHECK-NEXT: "col": 32,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2275,
+// CHECK-NEXT: "line": 96,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCBoolLiteralExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2248,
+// CHECK-NEXT: "line": 94,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2248,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "signed char",
+// CHECK-NEXT: "qualType": "BOOL",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "__objc_yes"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCBoolLiteralExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 2263,
+// CHECK-NEXT: "line": 95,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 9
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 2263,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 9
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "signed char",
+// CHECK-NEXT: "qualType": "BOOL",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "__objc_no"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
diff --git a/clang/test/AST/ast-dump-expr.cpp b/clang/test/AST/ast-dump-expr.cpp
index 5da025c229ea3..909a455134bb7 100644
--- a/clang/test/AST/ast-dump-expr.cpp
+++ b/clang/test/AST/ast-dump-expr.cpp
@@ -317,11 +317,11 @@ void PrimaryExpressions(Ts... a) {
// CHECK-NEXT: Destructor
// CHECK-NEXT: CXXMethodDecl 0x{{[^ ]*}} <col:16, col:18> col:3 operator() 'auto (int, ...) const' inline
// CHECK-NEXT: ParmVarDecl 0x{{[^ ]*}} <col:6, col:10> col:10 a 'int'
- // CHECK-NEXT: CompoundStmt
+ // CHECK: CompoundStmt
// CHECK-NEXT: CXXConversionDecl 0x{{[^ ]*}} <col:3, col:18> col:3 implicit constexpr operator auto (*)(int, ...) 'auto (*() const noexcept)(int, ...)' inline
// CHECK-NEXT: CXXMethodDecl 0x{{[^ ]*}} <col:3, col:18> col:3 implicit __invoke 'auto (int, ...)' static inline
// CHECK-NEXT: ParmVarDecl 0x{{[^ ]*}} <col:6, col:10> col:10 a 'int'
- // CHECK-NEXT: CompoundStmt 0x{{[^ ]*}} <col:17, col:18>
+ // CHECK: CompoundStmt 0x{{[^ ]*}} <col:17, col:18>
[a...]{};
// CHECK: LambdaExpr 0x{{[^ ]*}} <line:[[@LINE-1]]:3, col:10> '(lambda at {{.*}}:[[@LINE-1]]:3)'
diff --git a/clang/test/AST/ast-dump-file-line-json.c b/clang/test/AST/ast-dump-file-line-json.c
index da1c8dbd755d5..00273bdb3803c 100644
--- a/clang/test/AST/ast-dump-file-line-json.c
+++ b/clang/test/AST/ast-dump-file-line-json.c
@@ -1,310 +1,399 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -ast-dump=json %s | FileCheck %s
-
-#line 4 "test.c"
-int a;
-
-#line 32 "bar.h"
-int b;
-int c;
-
-#line 11 "test.c"
-int d;
-int e;
-// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "TranslationUnitDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TypedefDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "__int128_t",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "__int128"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "__int128"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TypedefDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "__uint128_t",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned __int128"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned __int128"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TypedefDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "__NSConstantString",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "struct __NSConstantString_tag"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "RecordType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "struct __NSConstantString_tag"
-// CHECK-NEXT: },
-// CHECK-NEXT: "decl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "RecordDecl",
-// CHECK-NEXT: "name": "__NSConstantString_tag"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TypedefDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "__builtin_ms_va_list",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "PointerType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TypedefDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "__builtin_va_list",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "struct __va_list_tag[1]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ConstantArrayType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "struct __va_list_tag[1]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "size": 1,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "RecordType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "struct __va_list_tag"
-// CHECK-NEXT: },
-// CHECK-NEXT: "decl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "RecordDecl",
-// CHECK-NEXT: "name": "__va_list_tag"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 4,
-// CHECK-NEXT: "presumedFile": "{{.*}}",
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "mangledName": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 7,
-// CHECK-NEXT: "presumedFile": "bar.h",
-// CHECK-NEXT: "presumedLine": 32,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "mangledName": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 8,
-// CHECK-NEXT: "presumedLine": 33,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "c",
-// CHECK-NEXT: "mangledName": "c",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 11,
-// CHECK-NEXT: "presumedFile": "{{.*}}",
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "d",
-// CHECK-NEXT: "mangledName": "d",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 12,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "e",
-// CHECK-NEXT: "mangledName": "e",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
+// RUN: %clang_cc1 -triple x86_64-unknown-unknown -ast-dump=json %s | FileCheck %s
+
+#line 4 "test.c"
+int a;
+
+#line 32 "bar.h"
+int b;
+int c;
+
+#line 11 "test.c"
+int d;
+int e;
+// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "TranslationUnitDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "__int128_t",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "__int128"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "__int128"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "__uint128_t",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned __int128"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned __int128"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "__NSConstantString",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "struct __NSConstantString_tag"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "struct __NSConstantString_tag"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordDecl",
+// CHECK-NEXT: "name": "__NSConstantString_tag"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "__builtin_ms_va_list",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "PointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "__builtin_va_list",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "struct __va_list_tag[1]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ConstantArrayType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "struct __va_list_tag[1]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "size": 1,
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "array"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "struct __va_list_tag"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordDecl",
+// CHECK-NEXT: "name": "__va_list_tag"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 108,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 4,
+// CHECK-NEXT: "presumedFile": "test.c",
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 104,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 108,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "mangledName": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 136,
+// CHECK-NEXT: "line": 7,
+// CHECK-NEXT: "presumedFile": "bar.h",
+// CHECK-NEXT: "presumedLine": 32,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 132,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 136,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "mangledName": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 144,
+// CHECK-NEXT: "line": 8,
+// CHECK-NEXT: "presumedLine": 33,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 140,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 144,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "c",
+// CHECK-NEXT: "mangledName": "c",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 173,
+// CHECK-NEXT: "line": 11,
+// CHECK-NEXT: "presumedFile": "test.c",
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 169,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 173,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "d",
+// CHECK-NEXT: "mangledName": "d",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 181,
+// CHECK-NEXT: "line": 12,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 177,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 181,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "e",
+// CHECK-NEXT: "mangledName": "e",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
diff --git a/clang/test/AST/ast-dump-for-range-lifetime.cpp b/clang/test/AST/ast-dump-for-range-lifetime.cpp
index 0e92b6990ed50..465892bdea17f 100644
--- a/clang/test/AST/ast-dump-for-range-lifetime.cpp
+++ b/clang/test/AST/ast-dump-for-range-lifetime.cpp
@@ -1,452 +1,2090 @@
-// RUN: %clang_cc1 -std=c++23 -triple x86_64-linux-gnu -fcxx-exceptions -ast-dump %s \
-// RUN: | FileCheck -strict-whitespace %s
-
-namespace P2718R0 {
-
-// Test basic
-struct A {
- int a[3] = {1, 2, 3};
- A() {}
- ~A() {}
- const int *begin() const { return a; }
- const int *end() const { return a + 3; }
- A& r() { return *this; }
- A g() { return A(); }
-};
-
-A g() { return A(); }
-const A &f1(const A &t) { return t; }
-
-void test1() {
- [[maybe_unused]] int sum = 0;
- // CHECK: FunctionDecl {{.*}} test1 'void ()'
- // CHECK: | `-CXXForRangeStmt {{.*}}
- // CHECK-NEXT: | |-<<<NULL>>>
- // CHECK-NEXT: | |-DeclStmt {{.*}}
- // CHECK-NEXT: | | `-VarDecl {{.*}} implicit used __range1 'const A &' cinit
- // CHECK-NEXT: | | `-ExprWithCleanups {{.*}} 'const A':'const P2718R0::A' lvalue
- // CHECK-NEXT: | | `-CallExpr {{.*}} 'const A':'const P2718R0::A' lvalue
- // CHECK-NEXT: | | |-ImplicitCastExpr {{.*}} 'const A &(*)(const A &)' <FunctionToPointerDecay>
- // CHECK-NEXT: | | | `-DeclRefExpr {{.*}} 'const A &(const A &)' lvalue Function {{.*}} 'f1' 'const A &(const A &)'
- // CHECK-NEXT: | | `-MaterializeTemporaryExpr {{.*}} 'const A':'const P2718R0::A' lvalue extended by Var {{.*}} '__range1' 'const A &'
- // CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} 'const A':'const P2718R0::A' <NoOp>
- // CHECK-NEXT: | | `-CXXBindTemporaryExpr {{.*}} 'A':'P2718R0::A' (CXXTemporary {{.*}})
- // CHECK-NEXT: | | `-CallExpr {{.*}} 'A':'P2718R0::A'
- // CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} 'A (*)()' <FunctionToPointerDecay>
- // CHECK-NEXT: | | `-DeclRefExpr {{.*}} 'A ()' lvalue Function {{.*}} 'g' 'A ()'
- for (auto e : f1(g()))
- sum += e;
-}
-
-struct B : A {};
-int (&f(const A *))[3];
-const A *g(const A &);
-void bar(int) {}
-
-void test2() {
- // CHECK: FunctionDecl {{.*}} test2 'void ()'
- // CHECK: | `-CXXForRangeStmt {{.*}}
- // CHECK-NEXT: | |-<<<NULL>>>
- // CHECK-NEXT: | |-DeclStmt {{.*}}
- // CHECK-NEXT: | | `-VarDecl {{.*}} implicit used __range1 'int (&)[3]' cinit
- // CHECK-NEXT: | | `-ExprWithCleanups {{.*}} 'int[3]' lvalue
- // CHECK-NEXT: | | `-CallExpr {{.*}} 'int[3]' lvalue
- // CHECK-NEXT: | | |-ImplicitCastExpr {{.*}} 'int (&(*)(const A *))[3]' <FunctionToPointerDecay>
- // CHECK-NEXT: | | | `-DeclRefExpr {{.*}} 'int (&(const A *))[3]' lvalue Function {{.*}} 'f' 'int (&(const A *))[3]'
- // CHECK-NEXT: | | `-CallExpr {{.*}} 'const A *'
- // CHECK-NEXT: | | |-ImplicitCastExpr {{.*}} 'const A *(*)(const A &)' <FunctionToPointerDecay>
- // CHECK-NEXT: | | | `-DeclRefExpr {{.*}} 'const A *(const A &)' lvalue Function {{.*}} 'g' 'const A *(const A &)'
- // CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} 'const A':'const P2718R0::A' lvalue <DerivedToBase (A)>
- // CHECK-NEXT: | | `-MaterializeTemporaryExpr {{.*}} 'const B':'const P2718R0::B' lvalue extended by Var {{.*}} '__range1' 'int (&)[3]'
- // CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} 'const B':'const P2718R0::B' <NoOp>
- // CHECK-NEXT: | | `-CXXBindTemporaryExpr {{.*}} 'B':'P2718R0::B' (CXXTemporary {{.*}})
- // CHECK-NEXT: | | `-CXXTemporaryObjectExpr {{.*}} 'B':'P2718R0::B' 'void () noexcept(false)' zeroing
- for (auto e : f(g(B())))
- bar(e);
-}
-
-// Test discard statement.
-struct LockGuard {
- LockGuard() {}
- ~LockGuard() {}
-};
-
-void test3() {
- int v[] = {42, 17, 13};
-
- // CHECK: FunctionDecl {{.*}} test3 'void ()'
- // CHECK: -CXXForRangeStmt {{.*}}
- // CHECK-NEXT: |-<<<NULL>>>
- // CHECK-NEXT: |-DeclStmt {{.*}}
- // CHECK-NEXT: | `-VarDecl {{.*}} implicit used __range1 'int (&)[3]' cinit
- // CHECK-NEXT: | `-ExprWithCleanups {{.*}} 'int[3]' lvalue
- // CHECK-NEXT: | `-BinaryOperator {{.*}} 'int[3]' lvalue ','
- // CHECK-NEXT: | |-CXXStaticCastExpr {{.*}} 'void' static_cast<void> <ToVoid>
- // CHECK-NEXT: | | `-MaterializeTemporaryExpr {{.*}} 'LockGuard':'P2718R0::LockGuard' xvalue extended by Var {{.*}} '__range1' 'int (&)[3]'
- // CHECK-NEXT: | | `-CXXBindTemporaryExpr {{.*}} 'LockGuard':'P2718R0::LockGuard' (CXXTemporary {{.*}})
- // CHECK-NEXT: | | `-CXXTemporaryObjectExpr {{.*}} 'LockGuard':'P2718R0::LockGuard' 'void ()'
- // CHECK-NEXT: | `-DeclRefExpr {{.*}} 'int[3]' lvalue Var {{.*}} 'v' 'int[3]'
- for ([[maybe_unused]] int x : static_cast<void>(LockGuard()), v)
- LockGuard guard;
-
- // CHECK: -CXXForRangeStmt {{.*}}
- // CHECK-NEXT: |-<<<NULL>>>
- // CHECK-NEXT: |-DeclStmt {{.*}}
- // CHECK-NEXT: | `-VarDecl {{.*}} implicit used __range1 'int (&)[3]' cinit
- // CHECK-NEXT: | `-ExprWithCleanups {{.*}} 'int[3]' lvalue
- // CHECK-NEXT: | `-BinaryOperator {{.*}} 'int[3]' lvalue ','
- // CHECK-NEXT: | |-CStyleCastExpr {{.*}} 'void' <ToVoid>
- // CHECK-NEXT: | | `-MaterializeTemporaryExpr {{.*}} 'LockGuard':'P2718R0::LockGuard' xvalue extended by Var {{.*}} '__range1' 'int (&)[3]'
- // CHECK-NEXT: | | `-CXXBindTemporaryExpr {{.*}} 'LockGuard':'P2718R0::LockGuard' (CXXTemporary {{.*}})
- // CHECK-NEXT: | | `-CXXTemporaryObjectExpr {{.*}} 'LockGuard':'P2718R0::LockGuard' 'void ()'
- // CHECK-NEXT: | `-DeclRefExpr {{.*}} 'int[3]' lvalue Var {{.*}} 'v' 'int[3]'
- for ([[maybe_unused]] int x : (void)LockGuard(), v)
- LockGuard guard;
-
- // CHECK: -CXXForRangeStmt {{.*}}
- // CHECK-NEXT: |-<<<NULL>>>
- // CHECK-NEXT: |-DeclStmt {{.*}}
- // CHECK-NEXT: | `-VarDecl {{.*}} implicit used __range1 'int (&)[3]' cinit
- // CHECK-NEXT: | `-ExprWithCleanups {{.*}} 'int[3]' lvalue
- // CHECK-NEXT: | `-BinaryOperator {{.*}} 'int[3]' lvalue ','
- // CHECK-NEXT: | |-MaterializeTemporaryExpr {{.*}} 'LockGuard':'P2718R0::LockGuard' xvalue extended by Var {{.*}} '__range1' 'int (&)[3]'
- // CHECK-NEXT: | | `-CXXBindTemporaryExpr {{.*}} 'LockGuard':'P2718R0::LockGuard' (CXXTemporary {{.*}})
- // CHECK-NEXT: | | `-CXXTemporaryObjectExpr {{.*}} 'LockGuard':'P2718R0::LockGuard' 'void ()'
- // CHECK-NEXT: | `-DeclRefExpr {{.*}} 'int[3]' lvalue Var {{.*}} 'v' 'int[3]'
- for ([[maybe_unused]] int x : LockGuard(), v)
- LockGuard guard;
-}
-
-// Test default arg
-int (&default_arg_fn(const A & = A()))[3];
-void test4() {
-
- // CHECK: FunctionDecl {{.*}} test4 'void ()'
- // CHECK: -CXXForRangeStmt {{.*}}
- // CHECK-NEXT: |-<<<NULL>>>
- // CHECK-NEXT: |-DeclStmt {{.*}}
- // CHECK-NEXT: | `-VarDecl{{.*}} implicit used __range1 'int (&)[3]' cinit
- // CHECK-NEXT: | `-ExprWithCleanups {{.*}} 'int[3]' lvalue
- // CHECK-NEXT: | `-CallExpr {{.*}} 'int[3]' lvalue
- // CHECK-NEXT: | |-ImplicitCastExpr {{.*}} 'int (&(*)(const A &))[3]' <FunctionToPointerDecay>
- // CHECK-NEXT: | | `-DeclRefExpr {{.*}} 'int (&(const A &))[3]' lvalue Function {{.*}} 'default_arg_fn' 'int (&(const A &))[3]'
- // CHECK-NEXT: | `-CXXDefaultArgExpr {{.*}} <<invalid sloc>> 'const A':'const P2718R0::A' lvalue has rewritten init
- // CHECK-NEXT: | `-MaterializeTemporaryExpr {{.*}} 'const A':'const P2718R0::A' lvalue extended by Var {{.*}} '__range1' 'int (&)[3]'
- // CHECK-NEXT: | `-ImplicitCastExpr {{.*}} 'const A':'const P2718R0::A' <NoOp>
- // CHECK-NEXT: | `-CXXBindTemporaryExpr {{.*}} 'A':'P2718R0::A' (CXXTemporary {{.*}})
- // CHECK-NEXT: | `-CXXTemporaryObjectExpr {{.*}} 'A':'P2718R0::A' 'void ()'
- for (auto e : default_arg_fn())
- bar(e);
-}
-
-struct DefaultA {
- DefaultA() {}
- ~DefaultA() {}
-};
-
-A foo(const A&, const DefaultA &Default = DefaultA()) {
- return A();
-}
-
-void test5() {
- // CHECK: FunctionDecl {{.*}} test5 'void ()'
- // CHECK: -CXXForRangeStmt {{.*}}
- // CHECK-NEXT: |-<<<NULL>>>
- // CHECK-NEXT: |-DeclStmt {{.*}}
- // CHECK-NEXT: | `-VarDecl {{.*}} implicit used __range1 'int (&)[3]' cinit
- // CHECK-NEXT: | `-ExprWithCleanups {{.*}} 'int[3]' lvalue
- // CHECK-NEXT: | `-CallExpr {{.*}} 'int[3]' lvalue
- // CHECK-NEXT: | |-ImplicitCastExpr {{.*}} 'int (&(*)(const A &))[3]' <FunctionToPointerDecay>
- // CHECK-NEXT: | | `-DeclRefExpr {{.*}} 'int (&(const A &))[3]' lvalue Function {{.*}} 'default_arg_fn' 'int (&(const A &))[3]'
- // CHECK-NEXT: | `-MaterializeTemporaryExpr {{.*}} 'const A':'const P2718R0::A' lvalue extended by Var {{.*}} '__range1' 'int (&)[3]'
- // CHECK-NEXT: | `-ImplicitCastExpr {{.*}} 'const A':'const P2718R0::A' <NoOp>
- // CHECK-NEXT: | `-CXXBindTemporaryExpr {{.*}} 'A':'P2718R0::A'
- // CHECK-NEXT: | `-CallExpr {{.*}} 'A':'P2718R0::A'
- // CHECK-NEXT: | |-ImplicitCastExpr {{.*}} 'A (*)(const A &, const DefaultA &)' <FunctionToPointerDecay>
- // CHECK-NEXT: | | `-DeclRefExpr {{.*}} 'A (const A &, const DefaultA &)' lvalue Function {{.*}} 'foo' 'A (const A &, const DefaultA &)'
- // CHECK-NEXT: | |-MaterializeTemporaryExpr {{.*}} 'const A':'const P2718R0::A' lvalue extended by Var {{.*}} '__range1' 'int (&)[3]'
- // CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} 'const A':'const P2718R0::A' <NoOp>
- // CHECK-NEXT: | | `-CXXBindTemporaryExpr {{.*}} 'A':'P2718R0::A'
- // CHECK-NEXT: | | `-CallExpr {{.*}} 'A':'P2718R0::A'
- // CHECK-NEXT: | | |-ImplicitCastExpr {{.*}} 'A (*)(const A &, const DefaultA &)' <FunctionToPointerDecay>
- // CHECK-NEXT: | | | `-DeclRefExpr {{.*}} 'A (const A &, const DefaultA &)' lvalue Function {{.*}} 'foo' 'A (const A &, const DefaultA &)'
- // CHECK-NEXT: | | |-MaterializeTemporaryExpr {{.*}} 'const A':'const P2718R0::A' lvalue extended by Var {{.*}} '__range1' 'int (&)[3]'
- // CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} 'const A':'const P2718R0::A' <NoOp>
- // CHECK-NEXT: | | | `-CXXBindTemporaryExpr {{.*}} 'A':'P2718R0::A'
- // CHECK-NEXT: | | | `-CallExpr {{.*}} 'A':'P2718R0::A'
- // CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} 'A (*)(const A &, const DefaultA &)' <FunctionToPointerDecay>
- // CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} 'A (const A &, const DefaultA &)' lvalue Function {{.*}} 'foo' 'A (const A &, const DefaultA &)'
- // CHECK-NEXT: | | | |-MaterializeTemporaryExpr {{.*}} 'const A':'const P2718R0::A' lvalue extended by Var {{.*}} '__range1' 'int (&)[3]'
- // CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} 'const A':'const P2718R0::A' <NoOp>
- // CHECK-NEXT: | | | | `-CXXBindTemporaryExpr {{.*}} 'A':'P2718R0::A'
- // CHECK-NEXT: | | | | `-CXXTemporaryObjectExpr {{.*}} 'A':'P2718R0::A' 'void ()'
- // CHECK-NEXT: | | | `-CXXDefaultArgExpr {{.*}} <<invalid sloc>> 'const DefaultA':'const P2718R0::DefaultA' lvalue has rewritten init
- // CHECK-NEXT: | | | `-MaterializeTemporaryExpr {{.*}} 'const DefaultA':'const P2718R0::DefaultA' lvalue extended by Var {{.*}} '__range1' 'int (&)[3]'
- // CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} 'const DefaultA':'const P2718R0::DefaultA' <NoOp>
- // CHECK-NEXT: | | | `-CXXBindTemporaryExpr {{.*}} 'DefaultA':'P2718R0::DefaultA' (CXXTemporary {{.*}})
- // CHECK-NEXT: | | | `-CXXTemporaryObjectExpr {{.*}} 'DefaultA':'P2718R0::DefaultA' 'void ()'
- // CHECK-NEXT: | | `-CXXDefaultArgExpr {{.*}} <<invalid sloc>> 'const DefaultA':'const P2718R0::DefaultA' lvalue has rewritten init
- // CHECK-NEXT: | | `-MaterializeTemporaryExpr {{.*}} 'const DefaultA':'const P2718R0::DefaultA' lvalue extended by Var {{.*}} '__range1' 'int (&)[3]'
- // CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} 'const DefaultA':'const P2718R0::DefaultA' <NoOp>
- // CHECK-NEXT: | | `-CXXBindTemporaryExpr {{.*}} 'DefaultA':'P2718R0::DefaultA' (CXXTemporary {{.*}})
- // CHECK-NEXT: | | `-CXXTemporaryObjectExpr {{.*}} 'DefaultA':'P2718R0::DefaultA' 'void ()'
- // CHECK-NEXT: | `-CXXDefaultArgExpr {{.*}} <<invalid sloc>> 'const DefaultA':'const P2718R0::DefaultA' lvalue has rewritten init
- // CHECK-NEXT: | `-MaterializeTemporaryExpr {{.*}} 'const DefaultA':'const P2718R0::DefaultA' lvalue extended by Var {{.*}} '__range1' 'int (&)[3]'
- // CHECK-NEXT: | `-ImplicitCastExpr {{.*}} 'const DefaultA':'const P2718R0::DefaultA' <NoOp>
- // CHECK-NEXT: | `-CXXBindTemporaryExpr {{.*}} 'DefaultA':'P2718R0::DefaultA' (CXXTemporary {{.*}})
- // CHECK-NEXT: | `-CXXTemporaryObjectExpr {{.*}} 'DefaultA':'P2718R0::DefaultA' 'void ()'
- for (auto e : default_arg_fn(foo(foo(foo(A())))))
- bar(e);
-}
-
-struct C : public A {
- C() {}
- C(int, const C &, const DefaultA & = DefaultA()) {}
-};
-
-void test6() {
- // CHECK: FunctionDecl {{.*}} test6 'void ()'
- // CHECK: -CXXForRangeStmt {{.*}}
- // CHECK-NEXT: |-<<<NULL>>>
- // CHECK-NEXT: |-DeclStmt {{.*}}
- // CHECK-NEXT: | `-VarDecl {{.*}} col:17 implicit used __range1 'C &&' cinit
- // CHECK-NEXT: | `-ExprWithCleanups {{.*}} 'C':'P2718R0::C' xvalue
- // CHECK-NEXT: | `-MaterializeTemporaryExpr {{.*}} 'C':'P2718R0::C' xvalue extended by Var {{.*}} '__range1' 'C &&'
- // CHECK-NEXT: | `-CXXBindTemporaryExpr {{.*}} 'C':'P2718R0::C'
- // CHECK-NEXT: | `-CXXTemporaryObjectExpr {{.*}} 'C':'P2718R0::C' 'void (int, const C &, const DefaultA &)'
- // CHECK-NEXT: | |-IntegerLiteral {{.*}}'int' 0
- // CHECK-NEXT: | |-MaterializeTemporaryExpr {{.*}} 'const C':'const P2718R0::C' lvalue extended by Var {{.*}} '__range1' 'C &&'
- // CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} 'const C':'const P2718R0::C' <NoOp>
- // CHECK-NEXT: | | `-CXXBindTemporaryExpr {{.*}} 'C':'P2718R0::C'
- // CHECK-NEXT: | | `-CXXTemporaryObjectExpr {{.*}} 'C':'P2718R0::C' 'void (int, const C &, const DefaultA &)'
- // CHECK-NEXT: | | |-IntegerLiteral {{.*}} 'int' 0
- // CHECK-NEXT: | | |-MaterializeTemporaryExpr {{.*}} 'const C':'const P2718R0::C' lvalue extended by Var {{.*}} '__range1' 'C &&'
- // CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} 'const C':'const P2718R0::C' <NoOp>
- // CHECK-NEXT: | | | `-CXXBindTemporaryExpr {{.*}} 'C':'P2718R0::C'
- // CHECK-NEXT: | | | `-CXXTemporaryObjectExpr {{.*}} 'C':'P2718R0::C' 'void (int, const C &, const DefaultA &)'
- // CHECK-NEXT: | | | |-IntegerLiteral {{.*}} 'int' 0
- // CHECK-NEXT: | | | |-MaterializeTemporaryExpr {{.*}} 'const C':'const P2718R0::C' lvalue extended by Var {{.*}} '__range1' 'C &&'
- // CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} 'const C':'const P2718R0::C' <NoOp>
- // CHECK-NEXT: | | | | `-CXXBindTemporaryExpr {{.*}} 'C':'P2718R0::C'
- // CHECK-NEXT: | | | | `-CXXTemporaryObjectExpr {{.*}} 'C':'P2718R0::C' 'void ()'
- // CHECK-NEXT: | | | `-CXXDefaultArgExpr {{.*}} <<invalid sloc>> 'const DefaultA':'const P2718R0::DefaultA' lvalue has rewritten init
- // CHECK-NEXT: | | | `-MaterializeTemporaryExpr {{.*}} 'const DefaultA':'const P2718R0::DefaultA' lvalue extended by Var {{.*}} '__range1' 'C &&'
- // CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} 'const DefaultA':'const P2718R0::DefaultA' <NoOp>
- // CHECK-NEXT: | | | `-CXXBindTemporaryExpr {{.*}} 'DefaultA':'P2718R0::DefaultA' (CXXTemporary {{.*}})
- // CHECK-NEXT: | | | `-CXXTemporaryObjectExpr {{.*}} 'DefaultA':'P2718R0::DefaultA' 'void ()'
- // CHECK-NEXT: | | `-CXXDefaultArgExpr {{.*}} <<invalid sloc>> 'const DefaultA':'const P2718R0::DefaultA' lvalue has rewritten init
- // CHECK-NEXT: | | `-MaterializeTemporaryExpr {{.*}} 'const DefaultA':'const P2718R0::DefaultA' lvalue extended by Var {{.*}} '__range1' 'C &&'
- // CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} 'const DefaultA':'const P2718R0::DefaultA' <NoOp>
- // CHECK-NEXT: | | `-CXXBindTemporaryExpr {{.*}} 'DefaultA':'P2718R0::DefaultA' (CXXTemporary {{.*}})
- // CHECK-NEXT: | | `-CXXTemporaryObjectExpr {{.*}} 'DefaultA':'P2718R0::DefaultA' 'void ()'
- // CHECK-NEXT: | `-CXXDefaultArgExpr {{.*}} <<invalid sloc>> 'const DefaultA':'const P2718R0::DefaultA' lvalue has rewritten init
- // CHECK-NEXT: | `-MaterializeTemporaryExpr {{.*}} 'const DefaultA':'const P2718R0::DefaultA' lvalue extended by Var {{.*}} '__range1' 'C &&'
- // CHECK-NEXT: | `-ImplicitCastExpr {{.*}} 'const DefaultA':'const P2718R0::DefaultA' <NoOp>
- // CHECK-NEXT: | `-CXXBindTemporaryExpr {{.*}} 'DefaultA':'P2718R0::DefaultA' (CXXTemporary {{.*}})
- // CHECK-NEXT: | `-CXXTemporaryObjectExpr {{.*}} 'DefaultA':'P2718R0::DefaultA' 'void ()'
- for (auto e : C(0, C(0, C(0, C()))))
- bar(e);
-}
-
-// Test member call
-void test7() {
- // CHECK: FunctionDecl {{.*}} test7 'void ()'
- // CHECK: -CXXForRangeStmt {{.*}}
- // CHECK-NEXT: |-<<<NULL>>>
- // CHECK-NEXT: |-DeclStmt {{.*}}
- // CHECK-NEXT: | `-VarDecl {{.*}} implicit used __range1 'A &&' cinit
- // CHECK-NEXT: | `-ExprWithCleanups {{.*}} 'A':'P2718R0::A' xvalue
- // CHECK-NEXT: | `-MaterializeTemporaryExpr {{.*}} 'A':'P2718R0::A' xvalue extended by Var {{.*}} '__range1' 'A &&'
- // CHECK-NEXT: | `-CXXBindTemporaryExpr {{.*}} 'A':'P2718R0::A' (CXXTemporary {{.*}})
- // CHECK-NEXT: | `-CXXMemberCallExpr {{.*}} 'A':'P2718R0::A'
- // CHECK-NEXT: | `-MemberExpr {{.*}} '<bound member function type>' .g {{.*}}
- // CHECK-NEXT: | `-CXXMemberCallExpr {{.*}} 'A':'P2718R0::A' lvalue
- // CHECK-NEXT: | `-MemberExpr {{.*}} '<bound member function type>' .r {{.*}}
- // CHECK-NEXT: | `-MaterializeTemporaryExpr {{.*}} 'A':'P2718R0::A' xvalue extended by Var {{.*}} '__range1' 'A &&'
- // CHECK-NEXT: | `-CXXBindTemporaryExpr {{.*}} 'A':'P2718R0::A' (CXXTemporary {{.*}})
- // CHECK-NEXT: | `-CXXMemberCallExpr {{.*}} 'A':'P2718R0::A'
- // CHECK-NEXT: | `-MemberExpr {{.*}} '<bound member function type>' .g {{.*}}
- // CHECK-NEXT: | `-CXXMemberCallExpr {{.*}} 'A':'P2718R0::A' lvalue
- // CHECK-NEXT: | `-MemberExpr {{.*}} '<bound member function type>' .r {{.*}}
- // CHECK-NEXT: | `-MaterializeTemporaryExpr {{.*}} 'A':'P2718R0::A' xvalue extended by Var {{.*}} '__range1' 'A &&'
- // CHECK-NEXT: | `-CXXBindTemporaryExpr {{.*}} 'A':'P2718R0::A' (CXXTemporary {{.*}})
- // CHECK-NEXT: | `-CXXMemberCallExpr {{.*}} 'A':'P2718R0::A'
- // CHECK-NEXT: | `-MemberExpr {{.*}} '<bound member function type>' .g {{.*}}
- // CHECK-NEXT: | `-CXXMemberCallExpr {{.*}} 'A':'P2718R0::A' lvalue
- // CHECK-NEXT: | `-MemberExpr {{.*}} '<bound member function type>' .r {{.*}}
- // CHECK-NEXT: | `-MaterializeTemporaryExpr {{.*}} 'A':'P2718R0::A' xvalue extended by Var {{.*}} '__range1' 'A &&'
- // CHECK-NEXT: | `-CXXBindTemporaryExpr {{.*}} 'A':'P2718R0::A' (CXXTemporary {{.*}})
- // CHECK-NEXT: | `-CallExpr {{.*}} 'A':'P2718R0::A'
- // CHECK-NEXT: | `-ImplicitCastExpr {{.*}} 'A (*)()' <FunctionToPointerDecay>
- // CHECK-NEXT: | `-DeclRefExpr {{.*}} 'A ()' lvalue Function {{.*}} 'g' 'A ()'
- for (auto e : g().r().g().r().g().r().g())
- bar(e);
-}
-
-// Test basic && dependent context
-template <typename T> T dg() { return T(); }
-template <typename T> const T &df1(const T &t) { return t; }
-
-void test8() {
- [[maybe_unused]] int sum = 0;
- // CHECK: FunctionDecl {{.*}} test8 'void ()'
- // CHECK: -CXXForRangeStmt {{.*}}
- // CHECK-NEXT: |-<<<NULL>>>
- // CHECK-NEXT: |-DeclStmt {{.*}}
- // CHECK-NEXT: | `-VarDecl {{.*}} implicit used __range1 'const P2718R0::A &' cinit
- // CHECK-NEXT: | `-ExprWithCleanups {{.*}} 'const P2718R0::A' lvalue
- // CHECK-NEXT: | `-CallExpr {{.*}} 'const P2718R0::A' lvalue
- // CHECK-NEXT: | |-ImplicitCastExpr {{.*}} 'const P2718R0::A &(*)(const P2718R0::A &)' <FunctionToPointerDecay>
- // CHECK-NEXT: | | `-DeclRefExpr {{.*}} 'const P2718R0::A &(const P2718R0::A &)' lvalue Function {{.*}} 'df1' 'const P2718R0::A &(const P2718R0::A &)' (FunctionTemplate {{.*}} 'df1')
- // CHECK-NEXT: | `-MaterializeTemporaryExpr {{.*}} 'const P2718R0::A' lvalue extended by Var {{.*}} '__range1' 'const P2718R0::A &'
- // CHECK-NEXT: | `-ImplicitCastExpr {{.*}} 'const P2718R0::A' <NoOp>
- // CHECK-NEXT: | `-CXXBindTemporaryExpr {{.*}} 'P2718R0::A' (CXXTemporary {{.*}})
- // CHECK-NEXT: | `-CallExpr {{.*}} 'P2718R0::A'
- // CHECK-NEXT: | `-ImplicitCastExpr {{.*}} 'P2718R0::A (*)()' <FunctionToPointerDecay>
- // CHECK-NEXT: | `-DeclRefExpr {{.*}} 'P2718R0::A ()' lvalue Function {{.*}} 'dg' 'P2718R0::A ()' (FunctionTemplate {{.*}} 'dg')
- for (auto e : df1(dg<A>()))
- sum += e;
-}
-
-template <typename T> int (&df2(const T *))[3];
-const A *dg2(const A &);
-
-void test9() {
- // CHECK: FunctionDecl {{.*}} test9 'void ()'
- // CHECK: -CXXForRangeStmt {{.*}}
- // CHECK-NEXT: |-<<<NULL>>>
- // CHECK-NEXT: |-DeclStmt {{.*}}
- // CHECK-NEXT: | `-VarDecl {{.*}} implicit used __range1 'int (&)[3]' cinit
- // CHECK-NEXT: | `-ExprWithCleanups {{.*}} 'int[3]' lvalue
- // CHECK-NEXT: | `-CallExpr {{.*}} 'int[3]' lvalue
- // CHECK-NEXT: | |-ImplicitCastExpr {{.*}} 'int (&(*)(const P2718R0::A *))[3]' <FunctionToPointerDecay>
- // CHECK-NEXT: | | `-DeclRefExpr {{.*}} 'int (&(const P2718R0::A *))[3]' lvalue Function {{.*}} 'df2' 'int (&(const P2718R0::A *))[3]' (FunctionTemplate {{.*}} 'df2')
- // CHECK-NEXT: | `-CallExpr {{.*}} 'const A *'
- // CHECK-NEXT: | |-ImplicitCastExpr {{.*}} 'const A *(*)(const A &)' <FunctionToPointerDecay>
- // CHECK-NEXT: | | `-DeclRefExpr {{.*}} 'const A *(const A &)' lvalue Function {{.*}} 'dg2' 'const A *(const A &)'
- // CHECK-NEXT: | `-ImplicitCastExpr {{.*}} 'const A':'const P2718R0::A' lvalue <DerivedToBase (A)>
- // CHECK-NEXT: | `-MaterializeTemporaryExpr {{.*}} 'const B':'const P2718R0::B' lvalue extended by Var {{.*}} '__range1' 'int (&)[3]'
- // CHECK-NEXT: | `-ImplicitCastExpr {{.*}} 'const B':'const P2718R0::B' <NoOp>
- // CHECK-NEXT: | `-CXXBindTemporaryExpr {{.*}} 'B':'P2718R0::B' (CXXTemporary {{.*}})
- // CHECK-NEXT: | `-CXXTemporaryObjectExpr {{.*}} 'B':'P2718R0::B' 'void () noexcept(false)' zeroing
- for (auto e : df2(dg2(B())))
- bar(e);
-}
-
-// Test discard statement && dependent context
-void test10() {
- int v[] = {42, 17, 13};
-
- // CHECK: FunctionDecl {{.*}} test10 'void ()'
- // CHECK: -CXXForRangeStmt {{.*}}
- // CHECK-NEXT: |-<<<NULL>>>
- // CHECK-NEXT: |-DeclStmt {{.*}}
- // CHECK-NEXT: | `-VarDecl {{.*}} implicit used __range1 'int (&)[3]' cinit
- // CHECK-NEXT: | `-ExprWithCleanups {{.*}} 'int[3]' lvalue
- // CHECK-NEXT: | `-BinaryOperator {{.*}} 'int[3]' lvalue ','
- // CHECK-NEXT: | |-CXXStaticCastExpr {{.*}} 'void' static_cast<void> <ToVoid>
- // CHECK-NEXT: | | `-CallExpr {{.*}} 'const P2718R0::LockGuard' lvalue
- // CHECK-NEXT: | | |-ImplicitCastExpr {{.*}} 'const P2718R0::LockGuard &(*)(const P2718R0::LockGuard &)' <FunctionToPointerDecay>
- // CHECK-NEXT: | | | `-DeclRefExpr {{.*}} 'const P2718R0::LockGuard &(const P2718R0::LockGuard &)' lvalue Function {{.*}} 'df1' 'const P2718R0::LockGuard &(const P2718R0::LockGuard &)' (FunctionTemplate {{.*}} 'df1')
- // CHECK-NEXT: | | `-MaterializeTemporaryExpr {{.*}} 'const LockGuard':'const P2718R0::LockGuard' lvalue extended by Var {{.*}} '__range1' 'int (&)[3]'
- // CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} 'const LockGuard':'const P2718R0::LockGuard' <NoOp>
- // CHECK-NEXT: | | `-CXXBindTemporaryExpr {{.*}} 'LockGuard':'P2718R0::LockGuard' (CXXTemporary {{.*}})
- // CHECK-NEXT: | | `-CXXTemporaryObjectExpr {{.*}} 'LockGuard':'P2718R0::LockGuard' 'void ()'
- // CHECK-NEXT: | `-DeclRefExpr {{.*}} 'int[3]' lvalue Var {{.*}} 'v' 'int[3]'
- for ([[maybe_unused]] int x : static_cast<void>(df1(LockGuard())), v)
- LockGuard guard;
-
- // CHECK: -CXXForRangeStmt {{.*}}
- // CHECK-NEXT: |-<<<NULL>>>
- // CHECK-NEXT: |-DeclStmt {{.*}}
- // CHECK-NEXT: | `-VarDecl {{.*}} implicit used __range1 'int (&)[3]' cinit
- // CHECK-NEXT: | `-ExprWithCleanups {{.*}} 'int[3]' lvalue
- // CHECK-NEXT: | `-BinaryOperator {{.*}} 'int[3]' lvalue ','
- // CHECK-NEXT: | |-CStyleCastExpr {{.*}} 'void' <ToVoid>
- // CHECK-NEXT: | | `-CallExpr {{.*}} 'const P2718R0::LockGuard' lvalue
- // CHECK-NEXT: | | |-ImplicitCastExpr {{.*}} 'const P2718R0::LockGuard &(*)(const P2718R0::LockGuard &)' <FunctionToPointerDecay>
- // CHECK-NEXT: | | | `-DeclRefExpr {{.*}} 'const P2718R0::LockGuard &(const P2718R0::LockGuard &)' lvalue Function {{.*}} 'df1' 'const P2718R0::LockGuard &(const P2718R0::LockGuard &)' (FunctionTemplate {{.*}} 'df1')
- // CHECK-NEXT: | | `-MaterializeTemporaryExpr {{.*}} 'const LockGuard':'const P2718R0::LockGuard' lvalue extended by Var {{.*}} '__range1' 'int (&)[3]'
- // CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} 'const LockGuard':'const P2718R0::LockGuard' <NoOp>
- // CHECK-NEXT: | | `-CXXBindTemporaryExpr {{.*}} 'LockGuard':'P2718R0::LockGuard' (CXXTemporary {{.*}})
- // CHECK-NEXT: | | `-CXXTemporaryObjectExpr {{.*}} 'LockGuard':'P2718R0::LockGuard' 'void ()'
- // CHECK-NEXT: | `-DeclRefExpr {{.*}} 'int[3]' lvalue Var {{.*}} 'v' 'int[3]'
- for ([[maybe_unused]] int x : (void)df1(LockGuard()), v)
- LockGuard guard;
-
- // CHECK: -CXXForRangeStmt {{.*}}
- // CHECK-NEXT: |-<<<NULL>>>
- // CHECK-NEXT: |-DeclStmt {{.*}}
- // CHECK-NEXT: | `-VarDecl {{.*}} implicit used __range1 'int (&)[3]' cinit
- // CHECK-NEXT: | `-ExprWithCleanups {{.*}} 'int[3]' lvalue
- // CHECK-NEXT: | `-BinaryOperator {{.*}} 'int[3]' lvalue ','
- // CHECK-NEXT: | |-BinaryOperator {{.*}} 'const P2718R0::LockGuard' lvalue ','
- // CHECK-NEXT: | | |-CallExpr {{.*}} 'const P2718R0::LockGuard' lvalue
- // CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} 'const P2718R0::LockGuard &(*)(const P2718R0::LockGuard &)' <FunctionToPointerDecay>
- // CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} 'const P2718R0::LockGuard &(const P2718R0::LockGuard &)' lvalue Function {{.*}} 'df1' 'const P2718R0::LockGuard &(const P2718R0::LockGuard &)' (FunctionTemplate {{.*}} 'df1')
- // CHECK-NEXT: | | | `-MaterializeTemporaryExpr {{.*}} 'const LockGuard':'const P2718R0::LockGuard' lvalue extended by Var {{.*}} '__range1' 'int (&)[3]'
- // CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} 'const LockGuard':'const P2718R0::LockGuard' <NoOp>
- // CHECK-NEXT: | | | `-CXXBindTemporaryExpr {{.*}} 'LockGuard':'P2718R0::LockGuard' (CXXTemporary {{.*}})
- // CHECK-NEXT: | | | `-CXXTemporaryObjectExpr {{.*}} 'LockGuard':'P2718R0::LockGuard' 'void ()'
- // CHECK-NEXT: | | `-CallExpr {{.*}} 'const P2718R0::LockGuard' lvalue
- // CHECK-NEXT: | | |-ImplicitCastExpr {{.*}} 'const P2718R0::LockGuard &(*)(const P2718R0::LockGuard &)' <FunctionToPointerDecay>
- // CHECK-NEXT: | | | `-DeclRefExpr {{.*}} 'const P2718R0::LockGuard &(const P2718R0::LockGuard &)' lvalue Function {{.*}} 'df1' 'const P2718R0::LockGuard &(const P2718R0::LockGuard &)' (FunctionTemplate {{.*}} 'df1')
- // CHECK-NEXT: | | `-MaterializeTemporaryExpr {{.*}} 'const LockGuard':'const P2718R0::LockGuard' lvalue extended by Var {{.*}} '__range1' 'int (&)[3]'
- // CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} 'const LockGuard':'const P2718R0::LockGuard' <NoOp>
- // CHECK-NEXT: | | `-CXXBindTemporaryExpr {{.*}} 'LockGuard':'P2718R0::LockGuard' (CXXTemporary {{.*}})
- // CHECK-NEXT: | | `-CXXTemporaryObjectExpr {{.*}} 'LockGuard':'P2718R0::LockGuard' 'void ()'
- // CHECK-NEXT: | `-DeclRefExpr {{.*}} 'int[3]' lvalue Var {{.*}} 'v' 'int[3]'
- for ([[maybe_unused]] int x : df1(LockGuard()), df1(LockGuard()), v)
- LockGuard guard;
-}
-
-// Test default argument && dependent context
-template <typename T> int (&default_arg_fn2(const T & = T()))[3];
-void test11() {
- for (auto e : default_arg_fn2<A>())
- bar(e);
-}
-
-template <typename T> A foo2(const T&, const DefaultA &Default = DefaultA());
-
-void test12() {
- for (auto e : default_arg_fn2(foo2(foo2(foo2(A())))))
- bar(e);
-}
-
-// Test member call && dependent context
-void test13() {
-
- // CHECK: FunctionDecl {{.*}} test13 'void ()'
- // CHECK: -CXXForRangeStmt {{.*}}
- // CHECK-NEXT: |-<<<NULL>>>
- // CHECK-NEXT: |-DeclStmt {{.*}}
- // CHECK-NEXT: | `-VarDecl {{.*}} implicit used __range1 'A &&' cinit
- // CHECK-NEXT: | `-ExprWithCleanups {{.*}} 'A':'P2718R0::A' xvalue
- // CHECK-NEXT: | `-MaterializeTemporaryExpr {{.*}} 'A':'P2718R0::A' xvalue extended by Var {{.*}} '__range1' 'A &&'
- // CHECK-NEXT: | `-CXXBindTemporaryExpr {{.*}} 'A':'P2718R0::A' (CXXTemporary {{.*}})
- // CHECK-NEXT: | `-CXXMemberCallExpr {{.*}} 'A':'P2718R0::A'
- // CHECK-NEXT: | `-MemberExpr {{.*}} '<bound member function type>' .g {{.*}}
- // CHECK-NEXT: | `-CXXMemberCallExpr {{.*}} 'A':'P2718R0::A' lvalue
- // CHECK-NEXT: | `-MemberExpr {{.*}} '<bound member function type>' .r {{.*}}
- // CHECK-NEXT: | `-MaterializeTemporaryExpr {{.*}} 'A':'P2718R0::A' xvalue extended by Var {{.*}} '__range1' 'A &&'
- // CHECK-NEXT: | `-CXXBindTemporaryExpr {{.*}} 'A':'P2718R0::A' (CXXTemporary {{.*}})
- // CHECK-NEXT: | `-CXXMemberCallExpr {{.*}} 'A':'P2718R0::A'
- // CHECK-NEXT: | `-MemberExpr {{.*}} '<bound member function type>' .g {{.*}}
- // CHECK-NEXT: | `-CXXMemberCallExpr {{.*}} 'A':'P2718R0::A' lvalue
- // CHECK-NEXT: | `-MemberExpr {{.*}} '<bound member function type>' .r {{.*}}
- // CHECK-NEXT: | `-MaterializeTemporaryExpr {{.*}} 'A':'P2718R0::A' xvalue extended by Var {{.*}} '__range1' 'A &&'
- // CHECK-NEXT: | `-CXXBindTemporaryExpr {{.*}} 'A':'P2718R0::A' (CXXTemporary {{.*}})
- // CHECK-NEXT: | `-CXXMemberCallExpr {{.*}} 'A':'P2718R0::A'
- // CHECK-NEXT: | `-MemberExpr {{.*}} '<bound member function type>' .g {{.*}}
- // CHECK-NEXT: | `-CXXMemberCallExpr {{.*}} 'A':'P2718R0::A' lvalue
- // CHECK-NEXT: | `-MemberExpr {{.*}} '<bound member function type>' .r {{.*}}
- // CHECK-NEXT: | `-MaterializeTemporaryExpr {{.*}} 'P2718R0::A' xvalue extended by Var {{.*}} '__range1' 'A &&'
- // CHECK-NEXT: | `-CXXBindTemporaryExpr {{.*}} 'P2718R0::A' (CXXTemporary {{.*}})
- // CHECK-NEXT: | `-CallExpr {{.*}} 'P2718R0::A'
- // CHECK-NEXT: | `-ImplicitCastExpr {{.*}} 'P2718R0::A (*)()' <FunctionToPointerDecay>
- // CHECK-NEXT: | `-DeclRefExpr {{.*}} 'P2718R0::A ()' lvalue Function {{.*}} 'dg' 'P2718R0::A ()' (FunctionTemplate {{.*}} 'dg')
- for (auto e : dg<A>().r().g().r().g().r().g())
- bar(e);
-}
-} // namespace P2718R0
+// RUN: %clang_cc1 -std=c++23 -triple x86_64-linux-gnu -fcxx-exceptions -ast-dump %s \
+// RUN: | FileCheck -strict-whitespace %s
+
+namespace P2718R0 {
+
+// Test basic
+struct A {
+ int a[3] = {1, 2, 3};
+ A() {}
+ ~A() {}
+ const int *begin() const { return a; }
+ const int *end() const { return a + 3; }
+ A& r() { return *this; }
+ A g() { return A(); }
+};
+
+A g() { return A(); }
+const A &f1(const A &t) { return t; }
+
+void test1() {
+ [[maybe_unused]] int sum = 0;
+
+ for (auto e : f1(g()))
+ sum += e;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+struct B : A {};
+int (&f(const A *))[3];
+const A *g(const A &);
+void bar(int) {}
+
+void test2() {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ for (auto e : f(g(B())))
+ bar(e);
+}
+
+// Test discard statement.
+struct LockGuard {
+ LockGuard() {}
+ ~LockGuard() {}
+};
+
+void test3() {
+ int v[] = {42, 17, 13};
+
+
+
+
+
+
+
+
+
+
+
+
+
+ for ([[maybe_unused]] int x : static_cast<void>(LockGuard()), v)
+ LockGuard guard;
+
+
+
+
+
+
+
+
+
+
+
+
+ for ([[maybe_unused]] int x : (void)LockGuard(), v)
+ LockGuard guard;
+
+
+
+
+
+
+
+
+
+
+
+ for ([[maybe_unused]] int x : LockGuard(), v)
+ LockGuard guard;
+}
+
+// Test default arg
+int (&default_arg_fn(const A & = A()))[3];
+void test4() {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ for (auto e : default_arg_fn())
+ bar(e);
+}
+
+struct DefaultA {
+ DefaultA() {}
+ ~DefaultA() {}
+};
+
+A foo(const A&, const DefaultA &Default = DefaultA()) {
+ return A();
+}
+
+void test5() {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ for (auto e : default_arg_fn(foo(foo(foo(A())))))
+ bar(e);
+}
+
+struct C : public A {
+ C() {}
+ C(int, const C &, const DefaultA & = DefaultA()) {}
+};
+
+void test6() {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ for (auto e : C(0, C(0, C(0, C()))))
+ bar(e);
+}
+
+// Test member call
+void test7() {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ for (auto e : g().r().g().r().g().r().g())
+ bar(e);
+}
+
+// Test basic && dependent context
+template <typename T> T dg() { return T(); }
+template <typename T> const T &df1(const T &t) { return t; }
+
+void test8() {
+ [[maybe_unused]] int sum = 0;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ for (auto e : df1(dg<A>()))
+ sum += e;
+}
+
+template <typename T> int (&df2(const T *))[3];
+const A *dg2(const A &);
+
+void test9() {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ for (auto e : df2(dg2(B())))
+ bar(e);
+}
+
+// Test discard statement && dependent context
+void test10() {
+ int v[] = {42, 17, 13};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ for ([[maybe_unused]] int x : static_cast<void>(df1(LockGuard())), v)
+ LockGuard guard;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ for ([[maybe_unused]] int x : (void)df1(LockGuard()), v)
+ LockGuard guard;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ for ([[maybe_unused]] int x : df1(LockGuard()), df1(LockGuard()), v)
+ LockGuard guard;
+}
+
+// Test default argument && dependent context
+template <typename T> int (&default_arg_fn2(const T & = T()))[3];
+void test11() {
+ for (auto e : default_arg_fn2<A>())
+ bar(e);
+}
+
+template <typename T> A foo2(const T&, const DefaultA &Default = DefaultA());
+
+void test12() {
+ for (auto e : default_arg_fn2(foo2(foo2(foo2(A())))))
+ bar(e);
+}
+
+// Test member call && dependent context
+void test13() {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ for (auto e : dg<A>().r().g().r().g().r().g())
+ bar(e);
+}
+} // namespace P2718R0
+
+// CHECK: TranslationUnitDecl 0x{{.+}} <<invalid sloc>> <invalid sloc>
+// CHECK: |-TypedefDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit __int128_t '__int128'
+// CHECK: | `-typeDetails: BuiltinType 0x{{.+}} '__int128'
+// CHECK: |-TypedefDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit __uint128_t 'unsigned __int128'
+// CHECK: | `-typeDetails: BuiltinType 0x{{.+}} 'unsigned __int128'
+// CHECK: |-TypedefDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit __NSConstantString '__NSConstantString_tag'
+// CHECK: | `-typeDetails: RecordType 0x{{.+}} '__NSConstantString_tag'
+// CHECK: | `-CXXRecord 0x{{.+}} '__NSConstantString_tag'
+// CHECK: |-TypedefDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit __builtin_ms_va_list 'char *'
+// CHECK: | `-typeDetails: PointerType 0x{{.+}} 'char *'
+// CHECK: | `-typeDetails: BuiltinType 0x{{.+}} 'char'
+// CHECK: |-TypedefDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit __builtin_va_list '__va_list_tag[1]'
+// CHECK: | `-typeDetails: ConstantArrayType 0x{{.+}} '__va_list_tag[1]' 1
+// CHECK: | `-typeDetails: RecordType 0x{{.+}} '__va_list_tag'
+// CHECK: | `-CXXRecord 0x{{.+}} '__va_list_tag'
+// CHECK: `-NamespaceDecl 0x{{.+}} <{{.*}} line:{{.*}}:{{.*}}> line:{{.*}}:{{.*}} P2718R0
+// CHECK: |-CXXRecordDecl 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}> line:{{.*}}:{{.*}} referenced struct A definition
+// CHECK: | |-DefinitionData standard_layout has_user_declared_ctor can_const_default_init
+// CHECK: | | |-DefaultConstructor exists non_trivial user_provided defaulted_is_constexpr
+// CHECK: | | |-CopyConstructor simple trivial has_const_param implicit_has_const_param
+// CHECK: | | |-MoveConstructor
+// CHECK: | | |-CopyAssignment simple trivial has_const_param implicit_has_const_param
+// CHECK: | | |-MoveAssignment
+// CHECK: | | `-Destructor non_trivial user_declared
+// CHECK: | |-CXXRecordDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} implicit referenced struct A
+// CHECK: | |-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} referenced a 'int[3]'
+// CHECK: | | `-InitListExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int[3]'
+// CHECK: | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 2
+// CHECK: | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 3
+// CHECK: | |-CXXConstructorDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used A 'void ()' implicit-inline
+// CHECK: | | |-CXXCtorInitializer Field 0x{{.+}} 'a' 'int[3]'
+// CHECK: | | | `-CXXDefaultInitExpr 0x{{.+}} <col:{{.*}}> 'int[3]' has rewritten init
+// CHECK: | | | `-InitListExpr 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'int[3]'
+// CHECK: | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 2
+// CHECK: | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 3
+// CHECK: | | `-CompoundStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | |-CXXDestructorDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used ~A 'void () noexcept' implicit-inline
+// CHECK: | | `-CompoundStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | |-CXXMethodDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used begin 'const int *() const' implicit-inline
+// CHECK: | | `-CompoundStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | `-ReturnStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'const int *' <ArrayToPointerDecay>
+// CHECK: | | `-MemberExpr 0x{{.+}} <col:{{.*}}> 'const int[3]' lvalue ->a 0x{{.+}}
+// CHECK: | | `-CXXThisExpr 0x{{.+}} <col:{{.*}}> 'const P2718R0::A *' implicit this
+// CHECK: | |-CXXMethodDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used end 'const int *() const' implicit-inline
+// CHECK: | | `-CompoundStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | `-ReturnStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const int *' '+'
+// CHECK: | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'const int *' <ArrayToPointerDecay>
+// CHECK: | | | `-MemberExpr 0x{{.+}} <col:{{.*}}> 'const int[3]' lvalue ->a 0x{{.+}}
+// CHECK: | | | `-CXXThisExpr 0x{{.+}} <col:{{.*}}> 'const P2718R0::A *' implicit this
+// CHECK: | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 3
+// CHECK: | |-CXXMethodDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used r 'A &()' implicit-inline
+// CHECK: | | `-CompoundStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | `-ReturnStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | `-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'P2718R0::A' lvalue prefix '*' cannot overflow
+// CHECK: | | `-CXXThisExpr 0x{{.+}} <col:{{.*}}> 'P2718R0::A *' this
+// CHECK: | |-CXXMethodDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used g 'A ()' implicit-inline
+// CHECK: | | `-CompoundStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | `-ReturnStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | `-ExprWithCleanups 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A'
+// CHECK: | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' (CXXTemporary 0x{{.+}})
+// CHECK: | | `-CXXTemporaryObjectExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' 'void ()'
+// CHECK: | |-CXXConstructorDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit constexpr A 'void (const A &)' inline default trivial noexcept-unevaluated 0x{{.+}}
+// CHECK: | | `-ParmVarDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} 'const A &'
+// CHECK: | | `-typeDetails: LValueReferenceType 0x{{.+}} 'const A &'
+// CHECK: | | `-qualTypeDetail: QualType 0x{{.+}} 'const A' const
+// CHECK: | | `-typeDetails: ElaboratedType 0x{{.+}} 'A' sugar
+// CHECK: | | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::A'
+// CHECK: | | `-CXXRecord 0x{{.+}} 'A'
+// CHECK: | `-CXXMethodDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit constexpr operator= 'A &(const A &)' inline default trivial noexcept-unevaluated 0x{{.+}}
+// CHECK: | `-ParmVarDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} 'const A &'
+// CHECK: | `-typeDetails: LValueReferenceType 0x{{.+}} 'const A &'
+// CHECK: | `-qualTypeDetail: QualType 0x{{.+}} 'const A' const
+// CHECK: | `-typeDetails: ElaboratedType 0x{{.+}} 'A' sugar
+// CHECK: | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::A'
+// CHECK: | `-CXXRecord 0x{{.+}} 'A'
+// CHECK: |-FunctionDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used g 'A ()'
+// CHECK: | `-CompoundStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | `-ReturnStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | `-ExprWithCleanups 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A'
+// CHECK: | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' (CXXTemporary 0x{{.+}})
+// CHECK: | `-CXXTemporaryObjectExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' 'void ()'
+// CHECK: |-FunctionDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used f1 'const A &(const A &)'
+// CHECK: | |-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used t 'const A &'
+// CHECK: | | `-typeDetails: LValueReferenceType 0x{{.+}} 'const A &'
+// CHECK: | | `-qualTypeDetail: QualType 0x{{.+}} 'const A' const
+// CHECK: | | `-typeDetails: ElaboratedType 0x{{.+}} 'A' sugar
+// CHECK: | | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::A'
+// CHECK: | | `-CXXRecord 0x{{.+}} 'A'
+// CHECK: | `-CompoundStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | `-ReturnStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const A':'const P2718R0::A' lvalue ParmVar 0x{{.+}} 't' 'const A &'
+// CHECK: |-FunctionDecl 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}> line:{{.*}}:{{.*}} test1 'void ()'
+// CHECK: | `-CompoundStmt 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used sum 'int' cinit
+// CHECK: | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | |-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | `-attrDetails: UnusedAttr 0x{{.+}} <col:{{.*}}> maybe_unused
+// CHECK: | `-CXXForRangeStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | |-<<<NULL>>>
+// CHECK: | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} implicit used __range1 'const A &' cinit
+// CHECK: | | |-ExprWithCleanups 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const A':'const P2718R0::A' lvalue
+// CHECK: | | | `-CallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const A':'const P2718R0::A' lvalue
+// CHECK: | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'const A &(*)(const A &)' <FunctionToPointerDecay>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const A &(const A &)' lvalue Function 0x{{.+}} 'f1' 'const A &(const A &)'
+// CHECK: | | | `-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const A':'const P2718R0::A' lvalue extended by Var 0x{{.+}} '__range1' 'const A &'
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const A':'const P2718R0::A' <NoOp>
+// CHECK: | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' (CXXTemporary 0x{{.+}})
+// CHECK: | | | `-CallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A'
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'A (*)()' <FunctionToPointerDecay>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'A ()' lvalue Function 0x{{.+}} 'g' 'A ()'
+// CHECK: | | `-typeDetails: LValueReferenceType 0x{{.+}} 'const A &'
+// CHECK: | | `-qualTypeDetail: QualType 0x{{.+}} 'const A' const
+// CHECK: | | `-typeDetails: ElaboratedType 0x{{.+}} 'A' sugar
+// CHECK: | | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::A'
+// CHECK: | | `-CXXRecord 0x{{.+}} 'A'
+// CHECK: | |-DeclStmt 0x{{.+}} <col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit used __begin1 'const int *' cinit
+// CHECK: | | |-CXXMemberCallExpr 0x{{.+}} <col:{{.*}}> 'const int *'
+// CHECK: | | | `-MemberExpr 0x{{.+}} <col:{{.*}}> '<bound member function type>' .begin 0x{{.+}}
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const A':'const P2718R0::A' lvalue Var 0x{{.+}} '__range1' 'const A &'
+// CHECK: | | `-typeDetails: AutoType 0x{{.+}} 'const int *' sugar
+// CHECK: | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-DeclStmt 0x{{.+}} <col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit used __end1 'const int *' cinit
+// CHECK: | | |-CXXMemberCallExpr 0x{{.+}} <col:{{.*}}> 'const int *'
+// CHECK: | | | `-MemberExpr 0x{{.+}} <col:{{.*}}> '<bound member function type>' .end 0x{{.+}}
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const A':'const P2718R0::A' lvalue Var 0x{{.+}} '__range1' 'const A &'
+// CHECK: | | `-typeDetails: AutoType 0x{{.+}} 'const int *' sugar
+// CHECK: | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-BinaryOperator 0x{{.+}} <col:{{.*}}> 'bool' '!='
+// CHECK: | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'const int *' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const int *' lvalue Var 0x{{.+}} '__begin1' 'const int *'
+// CHECK: | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'const int *' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const int *' lvalue Var 0x{{.+}} '__end1' 'const int *'
+// CHECK: | |-UnaryOperator 0x{{.+}} <col:{{.*}}> 'const int *' lvalue prefix '++'
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const int *' lvalue Var 0x{{.+}} '__begin1' 'const int *'
+// CHECK: | |-DeclStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used e 'int' cinit
+// CHECK: | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | `-UnaryOperator 0x{{.+}} <col:{{.*}}> 'const int' lvalue prefix '*' cannot overflow
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'const int *' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const int *' lvalue Var 0x{{.+}} '__begin1' 'const int *'
+// CHECK: | | `-typeDetails: AutoType 0x{{.+}} 'int' sugar
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | `-CompoundAssignOperator 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'int' lvalue '+=' ComputeLHSTy='int' ComputeResultTy='int'
+// CHECK: | |-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'sum' 'int'
+// CHECK: | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'e' 'int'
+// CHECK: |-CXXRecordDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} referenced struct B definition
+// CHECK: | |-DefinitionData aggregate standard_layout has_constexpr_non_copy_move_ctor can_const_default_init
+// CHECK: | | |-DefaultConstructor exists non_trivial constexpr defaulted_is_constexpr
+// CHECK: | | |-CopyConstructor simple trivial has_const_param needs_overload_resolution implicit_has_const_param
+// CHECK: | | |-MoveConstructor exists simple trivial needs_overload_resolution
+// CHECK: | | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | |-MoveAssignment exists simple trivial needs_overload_resolution
+// CHECK: | | `-Destructor simple non_trivial constexpr needs_overload_resolution
+// CHECK: | |-public 'A':'P2718R0::A'
+// CHECK: | |-CXXRecordDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} implicit struct B
+// CHECK: | |-CXXConstructorDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit constexpr B 'void (const B &)' inline default trivial noexcept-unevaluated 0x{{.+}}
+// CHECK: | | `-ParmVarDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} 'const B &'
+// CHECK: | | `-typeDetails: LValueReferenceType 0x{{.+}} 'const B &'
+// CHECK: | | `-qualTypeDetail: QualType 0x{{.+}} 'const B' const
+// CHECK: | | `-typeDetails: ElaboratedType 0x{{.+}} 'B' sugar
+// CHECK: | | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::B'
+// CHECK: | | `-CXXRecord 0x{{.+}} 'B'
+// CHECK: | |-CXXConstructorDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit constexpr B 'void (B &&)' inline default trivial noexcept-unevaluated 0x{{.+}}
+// CHECK: | | `-ParmVarDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} 'B &&'
+// CHECK: | | `-typeDetails: RValueReferenceType 0x{{.+}} 'B &&'
+// CHECK: | | `-typeDetails: ElaboratedType 0x{{.+}} 'B' sugar
+// CHECK: | | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::B'
+// CHECK: | | `-CXXRecord 0x{{.+}} 'B'
+// CHECK: | |-CXXMethodDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit constexpr operator= 'B &(B &&)' inline default trivial noexcept-unevaluated 0x{{.+}}
+// CHECK: | | `-ParmVarDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} 'B &&'
+// CHECK: | | `-typeDetails: RValueReferenceType 0x{{.+}} 'B &&'
+// CHECK: | | `-typeDetails: ElaboratedType 0x{{.+}} 'B' sugar
+// CHECK: | | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::B'
+// CHECK: | | `-CXXRecord 0x{{.+}} 'B'
+// CHECK: | |-CXXDestructorDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit used constexpr ~B 'void () noexcept' inline default
+// CHECK: | | `-CompoundStmt 0x{{.+}} <col:{{.*}}>
+// CHECK: | `-CXXConstructorDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit used constexpr B 'void () noexcept(false)' inline default
+// CHECK: | |-CXXCtorInitializer 'A':'P2718R0::A'
+// CHECK: | | `-CXXConstructExpr 0x{{.+}} <col:{{.*}}> 'A':'P2718R0::A' 'void ()'
+// CHECK: | `-CompoundStmt 0x{{.+}} <col:{{.*}}>
+// CHECK: |-FunctionDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used f 'int (&(const A *))[3]'
+// CHECK: | `-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} 'const A *'
+// CHECK: | `-typeDetails: PointerType 0x{{.+}} 'const A *'
+// CHECK: | `-qualTypeDetail: QualType 0x{{.+}} 'const A' const
+// CHECK: | `-typeDetails: ElaboratedType 0x{{.+}} 'A' sugar
+// CHECK: | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::A'
+// CHECK: | `-CXXRecord 0x{{.+}} 'A'
+// CHECK: |-FunctionDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used g 'const A *(const A &)'
+// CHECK: | `-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} 'const A &'
+// CHECK: | `-typeDetails: LValueReferenceType 0x{{.+}} 'const A &'
+// CHECK: | `-qualTypeDetail: QualType 0x{{.+}} 'const A' const
+// CHECK: | `-typeDetails: ElaboratedType 0x{{.+}} 'A' sugar
+// CHECK: | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::A'
+// CHECK: | `-CXXRecord 0x{{.+}} 'A'
+// CHECK: |-FunctionDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used bar 'void (int)'
+// CHECK: | |-ParmVarDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} 'int'
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | `-CompoundStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: |-FunctionDecl 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}> line:{{.*}}:{{.*}} test2 'void ()'
+// CHECK: | `-CompoundStmt 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | `-CXXForRangeStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | |-<<<NULL>>>
+// CHECK: | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} implicit used __range1 'int (&)[3]' cinit
+// CHECK: | | |-ExprWithCleanups 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int[3]' lvalue
+// CHECK: | | | `-CallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int[3]' lvalue
+// CHECK: | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int (&(*)(const A *))[3]' <FunctionToPointerDecay>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int (&(const A *))[3]' lvalue Function 0x{{.+}} 'f' 'int (&(const A *))[3]'
+// CHECK: | | | `-CallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const A *'
+// CHECK: | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'const A *(*)(const A &)' <FunctionToPointerDecay>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const A *(const A &)' lvalue Function 0x{{.+}} 'g' 'const A *(const A &)'
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const A':'const P2718R0::A' lvalue <DerivedToBase (A)>
+// CHECK: | | | `-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const B':'const P2718R0::B' lvalue extended by Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const B':'const P2718R0::B' <NoOp>
+// CHECK: | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'B':'P2718R0::B' (CXXTemporary 0x{{.+}})
+// CHECK: | | | `-CXXTemporaryObjectExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'B':'P2718R0::B' 'void () noexcept(false)' zeroing
+// CHECK: | | `-typeDetails: LValueReferenceType 0x{{.+}} 'int (&)[3]'
+// CHECK: | | `-typeDetails: ParenType 0x{{.+}} 'int[3]' sugar
+// CHECK: | | `-typeDetails: ConstantArrayType 0x{{.+}} 'int[3]' 3
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-DeclStmt 0x{{.+}} <col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit used __begin1 'int *' cinit
+// CHECK: | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <ArrayToPointerDecay>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int[3]' lvalue Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | `-typeDetails: AutoType 0x{{.+}} 'int *' sugar
+// CHECK: | | `-typeDetails: DecayedType 0x{{.+}} 'int *' sugar
+// CHECK: | | |-typeDetails: ParenType 0x{{.+}} 'int[3]' sugar
+// CHECK: | | | `-typeDetails: ConstantArrayType 0x{{.+}} 'int[3]' 3
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | `-typeDetails: PointerType 0x{{.+}} 'int *'
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-DeclStmt 0x{{.+}} <col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} implicit used __end1 'int *' cinit
+// CHECK: | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int *' '+'
+// CHECK: | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <ArrayToPointerDecay>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int[3]' lvalue Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'long' 3
+// CHECK: | | `-typeDetails: AutoType 0x{{.+}} 'int *' sugar
+// CHECK: | | `-typeDetails: PointerType 0x{{.+}} 'int *'
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-BinaryOperator 0x{{.+}} <col:{{.*}}> 'bool' '!='
+// CHECK: | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__begin1' 'int *'
+// CHECK: | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__end1' 'int *'
+// CHECK: | |-UnaryOperator 0x{{.+}} <col:{{.*}}> 'int *' lvalue prefix '++'
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__begin1' 'int *'
+// CHECK: | |-DeclStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used e 'int' cinit
+// CHECK: | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | `-UnaryOperator 0x{{.+}} <col:{{.*}}> 'int' lvalue prefix '*' cannot overflow
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__begin1' 'int *'
+// CHECK: | | `-typeDetails: AutoType 0x{{.+}} 'int' sugar
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | `-CallExpr 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'void'
+// CHECK: | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'void (*)(int)' <FunctionToPointerDecay>
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'void (int)' lvalue Function 0x{{.+}} 'bar' 'void (int)'
+// CHECK: | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'e' 'int'
+// CHECK: |-CXXRecordDecl 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}> line:{{.*}}:{{.*}} referenced struct LockGuard definition
+// CHECK: | |-DefinitionData empty standard_layout has_user_declared_ctor can_const_default_init
+// CHECK: | | |-DefaultConstructor exists non_trivial user_provided defaulted_is_constexpr
+// CHECK: | | |-CopyConstructor simple trivial has_const_param implicit_has_const_param
+// CHECK: | | |-MoveConstructor
+// CHECK: | | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | |-MoveAssignment
+// CHECK: | | `-Destructor non_trivial user_declared
+// CHECK: | |-CXXRecordDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} implicit referenced struct LockGuard
+// CHECK: | |-CXXConstructorDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used LockGuard 'void ()' implicit-inline
+// CHECK: | | `-CompoundStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | |-CXXDestructorDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used ~LockGuard 'void () noexcept' implicit-inline
+// CHECK: | | `-CompoundStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | `-CXXConstructorDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit constexpr LockGuard 'void (const LockGuard &)' inline default trivial noexcept-unevaluated 0x{{.+}}
+// CHECK: | `-ParmVarDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} 'const LockGuard &'
+// CHECK: | `-typeDetails: LValueReferenceType 0x{{.+}} 'const LockGuard &'
+// CHECK: | `-qualTypeDetail: QualType 0x{{.+}} 'const LockGuard' const
+// CHECK: | `-typeDetails: ElaboratedType 0x{{.+}} 'LockGuard' sugar
+// CHECK: | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::LockGuard'
+// CHECK: | `-CXXRecord 0x{{.+}} 'LockGuard'
+// CHECK: |-FunctionDecl 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}> line:{{.*}}:{{.*}} test3 'void ()'
+// CHECK: | `-CompoundStmt 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used v 'int[3]' cinit
+// CHECK: | | |-InitListExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int[3]'
+// CHECK: | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 42
+// CHECK: | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 17
+// CHECK: | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 13
+// CHECK: | | `-typeDetails: ConstantArrayType 0x{{.+}} 'int[3]' 3
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-CXXForRangeStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} implicit used __range1 'int (&)[3]' cinit
+// CHECK: | | | |-ExprWithCleanups 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int[3]' lvalue
+// CHECK: | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int[3]' lvalue ','
+// CHECK: | | | | |-CXXStaticCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'void' static_cast<void> <ToVoid>
+// CHECK: | | | | | `-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'LockGuard':'P2718R0::LockGuard' xvalue extended by Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'LockGuard':'P2718R0::LockGuard' (CXXTemporary 0x{{.+}})
+// CHECK: | | | | | `-CXXTemporaryObjectExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'LockGuard':'P2718R0::LockGuard' 'void ()'
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int[3]' lvalue Var 0x{{.+}} 'v' 'int[3]'
+// CHECK: | | | `-typeDetails: LValueReferenceType 0x{{.+}} 'int (&)[3]'
+// CHECK: | | | `-typeDetails: ConstantArrayType 0x{{.+}} 'int[3]' 3
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-DeclStmt 0x{{.+}} <col:{{.*}}>
+// CHECK: | | | `-VarDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit used __begin1 'int *' cinit
+// CHECK: | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <ArrayToPointerDecay>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int[3]' lvalue Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | `-typeDetails: AutoType 0x{{.+}} 'int *' sugar
+// CHECK: | | | `-typeDetails: DecayedType 0x{{.+}} 'int *' sugar
+// CHECK: | | | |-typeDetails: ConstantArrayType 0x{{.+}} 'int[3]' 3
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | `-typeDetails: PointerType 0x{{.+}} 'int *'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-DeclStmt 0x{{.+}} <col:{{.*}}>
+// CHECK: | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} implicit used __end1 'int *' cinit
+// CHECK: | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int *' '+'
+// CHECK: | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <ArrayToPointerDecay>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int[3]' lvalue Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'long' 3
+// CHECK: | | | `-typeDetails: AutoType 0x{{.+}} 'int *' sugar
+// CHECK: | | | `-typeDetails: PointerType 0x{{.+}} 'int *'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-BinaryOperator 0x{{.+}} <col:{{.*}}> 'bool' '!='
+// CHECK: | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__begin1' 'int *'
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__end1' 'int *'
+// CHECK: | | |-UnaryOperator 0x{{.+}} <col:{{.*}}> 'int *' lvalue prefix '++'
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__begin1' 'int *'
+// CHECK: | | |-DeclStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} x 'int' cinit
+// CHECK: | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | `-UnaryOperator 0x{{.+}} <col:{{.*}}> 'int' lvalue prefix '*' cannot overflow
+// CHECK: | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__begin1' 'int *'
+// CHECK: | | | |-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | `-attrDetails: UnusedAttr 0x{{.+}} <col:{{.*}}> maybe_unused
+// CHECK: | | `-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} guard 'LockGuard':'P2718R0::LockGuard' callinit destroyed
+// CHECK: | | |-CXXConstructExpr 0x{{.+}} <col:{{.*}}> 'LockGuard':'P2718R0::LockGuard' 'void ()'
+// CHECK: | | `-typeDetails: ElaboratedType 0x{{.+}} 'LockGuard' sugar
+// CHECK: | | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::LockGuard'
+// CHECK: | | `-CXXRecord 0x{{.+}} 'LockGuard'
+// CHECK: | |-CXXForRangeStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} implicit used __range1 'int (&)[3]' cinit
+// CHECK: | | | |-ExprWithCleanups 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int[3]' lvalue
+// CHECK: | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int[3]' lvalue ','
+// CHECK: | | | | |-CStyleCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'void' <ToVoid>
+// CHECK: | | | | | `-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'LockGuard':'P2718R0::LockGuard' xvalue extended by Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'LockGuard':'P2718R0::LockGuard' (CXXTemporary 0x{{.+}})
+// CHECK: | | | | | `-CXXTemporaryObjectExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'LockGuard':'P2718R0::LockGuard' 'void ()'
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int[3]' lvalue Var 0x{{.+}} 'v' 'int[3]'
+// CHECK: | | | `-typeDetails: LValueReferenceType 0x{{.+}} 'int (&)[3]'
+// CHECK: | | | `-typeDetails: ConstantArrayType 0x{{.+}} 'int[3]' 3
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-DeclStmt 0x{{.+}} <col:{{.*}}>
+// CHECK: | | | `-VarDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit used __begin1 'int *' cinit
+// CHECK: | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <ArrayToPointerDecay>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int[3]' lvalue Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | `-typeDetails: AutoType 0x{{.+}} 'int *' sugar
+// CHECK: | | | `-typeDetails: DecayedType 0x{{.+}} 'int *' sugar
+// CHECK: | | | |-typeDetails: ConstantArrayType 0x{{.+}} 'int[3]' 3
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | `-typeDetails: PointerType 0x{{.+}} 'int *'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-DeclStmt 0x{{.+}} <col:{{.*}}>
+// CHECK: | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} implicit used __end1 'int *' cinit
+// CHECK: | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int *' '+'
+// CHECK: | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <ArrayToPointerDecay>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int[3]' lvalue Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'long' 3
+// CHECK: | | | `-typeDetails: AutoType 0x{{.+}} 'int *' sugar
+// CHECK: | | | `-typeDetails: PointerType 0x{{.+}} 'int *'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-BinaryOperator 0x{{.+}} <col:{{.*}}> 'bool' '!='
+// CHECK: | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__begin1' 'int *'
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__end1' 'int *'
+// CHECK: | | |-UnaryOperator 0x{{.+}} <col:{{.*}}> 'int *' lvalue prefix '++'
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__begin1' 'int *'
+// CHECK: | | |-DeclStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} x 'int' cinit
+// CHECK: | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | `-UnaryOperator 0x{{.+}} <col:{{.*}}> 'int' lvalue prefix '*' cannot overflow
+// CHECK: | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__begin1' 'int *'
+// CHECK: | | | |-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | `-attrDetails: UnusedAttr 0x{{.+}} <col:{{.*}}> maybe_unused
+// CHECK: | | `-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} guard 'LockGuard':'P2718R0::LockGuard' callinit destroyed
+// CHECK: | | |-CXXConstructExpr 0x{{.+}} <col:{{.*}}> 'LockGuard':'P2718R0::LockGuard' 'void ()'
+// CHECK: | | `-typeDetails: ElaboratedType 0x{{.+}} 'LockGuard' sugar
+// CHECK: | | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::LockGuard'
+// CHECK: | | `-CXXRecord 0x{{.+}} 'LockGuard'
+// CHECK: | `-CXXForRangeStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | |-<<<NULL>>>
+// CHECK: | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} implicit used __range1 'int (&)[3]' cinit
+// CHECK: | | |-ExprWithCleanups 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int[3]' lvalue
+// CHECK: | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int[3]' lvalue ','
+// CHECK: | | | |-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'LockGuard':'P2718R0::LockGuard' xvalue extended by Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'LockGuard':'P2718R0::LockGuard' (CXXTemporary 0x{{.+}})
+// CHECK: | | | | `-CXXTemporaryObjectExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'LockGuard':'P2718R0::LockGuard' 'void ()'
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int[3]' lvalue Var 0x{{.+}} 'v' 'int[3]'
+// CHECK: | | `-typeDetails: LValueReferenceType 0x{{.+}} 'int (&)[3]'
+// CHECK: | | `-typeDetails: ConstantArrayType 0x{{.+}} 'int[3]' 3
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-DeclStmt 0x{{.+}} <col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit used __begin1 'int *' cinit
+// CHECK: | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <ArrayToPointerDecay>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int[3]' lvalue Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | `-typeDetails: AutoType 0x{{.+}} 'int *' sugar
+// CHECK: | | `-typeDetails: DecayedType 0x{{.+}} 'int *' sugar
+// CHECK: | | |-typeDetails: ConstantArrayType 0x{{.+}} 'int[3]' 3
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | `-typeDetails: PointerType 0x{{.+}} 'int *'
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-DeclStmt 0x{{.+}} <col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} implicit used __end1 'int *' cinit
+// CHECK: | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int *' '+'
+// CHECK: | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <ArrayToPointerDecay>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int[3]' lvalue Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'long' 3
+// CHECK: | | `-typeDetails: AutoType 0x{{.+}} 'int *' sugar
+// CHECK: | | `-typeDetails: PointerType 0x{{.+}} 'int *'
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-BinaryOperator 0x{{.+}} <col:{{.*}}> 'bool' '!='
+// CHECK: | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__begin1' 'int *'
+// CHECK: | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__end1' 'int *'
+// CHECK: | |-UnaryOperator 0x{{.+}} <col:{{.*}}> 'int *' lvalue prefix '++'
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__begin1' 'int *'
+// CHECK: | |-DeclStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} x 'int' cinit
+// CHECK: | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | `-UnaryOperator 0x{{.+}} <col:{{.*}}> 'int' lvalue prefix '*' cannot overflow
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__begin1' 'int *'
+// CHECK: | | |-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | `-attrDetails: UnusedAttr 0x{{.+}} <col:{{.*}}> maybe_unused
+// CHECK: | `-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} guard 'LockGuard':'P2718R0::LockGuard' callinit destroyed
+// CHECK: | |-CXXConstructExpr 0x{{.+}} <col:{{.*}}> 'LockGuard':'P2718R0::LockGuard' 'void ()'
+// CHECK: | `-typeDetails: ElaboratedType 0x{{.+}} 'LockGuard' sugar
+// CHECK: | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::LockGuard'
+// CHECK: | `-CXXRecord 0x{{.+}} 'LockGuard'
+// CHECK: |-FunctionDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used default_arg_fn 'int (&(const A &))[3]'
+// CHECK: | `-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} 'const A &' cinit
+// CHECK: | |-ExprWithCleanups 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const A':'const P2718R0::A' lvalue
+// CHECK: | | `-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const A':'const P2718R0::A' lvalue
+// CHECK: | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const A':'const P2718R0::A' <NoOp>
+// CHECK: | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' (CXXTemporary 0x{{.+}})
+// CHECK: | | `-CXXTemporaryObjectExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' 'void ()'
+// CHECK: | `-typeDetails: LValueReferenceType 0x{{.+}} 'const A &'
+// CHECK: | `-qualTypeDetail: QualType 0x{{.+}} 'const A' const
+// CHECK: | `-typeDetails: ElaboratedType 0x{{.+}} 'A' sugar
+// CHECK: | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::A'
+// CHECK: | `-CXXRecord 0x{{.+}} 'A'
+// CHECK: |-FunctionDecl 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}> line:{{.*}}:{{.*}} test4 'void ()'
+// CHECK: | `-CompoundStmt 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | `-CXXForRangeStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | |-<<<NULL>>>
+// CHECK: | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} implicit used __range1 'int (&)[3]' cinit
+// CHECK: | | |-ExprWithCleanups 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int[3]' lvalue
+// CHECK: | | | `-CallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int[3]' lvalue
+// CHECK: | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int (&(*)(const A &))[3]' <FunctionToPointerDecay>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int (&(const A &))[3]' lvalue Function 0x{{.+}} 'default_arg_fn' 'int (&(const A &))[3]'
+// CHECK: | | | `-CXXDefaultArgExpr 0x{{.+}} <<invalid sloc>> 'const A':'const P2718R0::A' lvalue has rewritten init
+// CHECK: | | | `-MaterializeTemporaryExpr 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'const A':'const P2718R0::A' lvalue extended by Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const A':'const P2718R0::A' <NoOp>
+// CHECK: | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' (CXXTemporary 0x{{.+}})
+// CHECK: | | | `-CXXTemporaryObjectExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' 'void ()'
+// CHECK: | | `-typeDetails: LValueReferenceType 0x{{.+}} 'int (&)[3]'
+// CHECK: | | `-typeDetails: ParenType 0x{{.+}} 'int[3]' sugar
+// CHECK: | | `-typeDetails: ConstantArrayType 0x{{.+}} 'int[3]' 3
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit used __begin1 'int *' cinit
+// CHECK: | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <ArrayToPointerDecay>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int[3]' lvalue Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | `-typeDetails: AutoType 0x{{.+}} 'int *' sugar
+// CHECK: | | `-typeDetails: DecayedType 0x{{.+}} 'int *' sugar
+// CHECK: | | |-typeDetails: ParenType 0x{{.+}} 'int[3]' sugar
+// CHECK: | | | `-typeDetails: ConstantArrayType 0x{{.+}} 'int[3]' 3
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | `-typeDetails: PointerType 0x{{.+}} 'int *'
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-DeclStmt 0x{{.+}} <col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} implicit used __end1 'int *' cinit
+// CHECK: | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int *' '+'
+// CHECK: | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <ArrayToPointerDecay>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int[3]' lvalue Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'long' 3
+// CHECK: | | `-typeDetails: AutoType 0x{{.+}} 'int *' sugar
+// CHECK: | | `-typeDetails: PointerType 0x{{.+}} 'int *'
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-BinaryOperator 0x{{.+}} <col:{{.*}}> 'bool' '!='
+// CHECK: | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__begin1' 'int *'
+// CHECK: | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__end1' 'int *'
+// CHECK: | |-UnaryOperator 0x{{.+}} <col:{{.*}}> 'int *' lvalue prefix '++'
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__begin1' 'int *'
+// CHECK: | |-DeclStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used e 'int' cinit
+// CHECK: | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | `-UnaryOperator 0x{{.+}} <col:{{.*}}> 'int' lvalue prefix '*' cannot overflow
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__begin1' 'int *'
+// CHECK: | | `-typeDetails: AutoType 0x{{.+}} 'int' sugar
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | `-CallExpr 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'void'
+// CHECK: | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'void (*)(int)' <FunctionToPointerDecay>
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'void (int)' lvalue Function 0x{{.+}} 'bar' 'void (int)'
+// CHECK: | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'e' 'int'
+// CHECK: |-CXXRecordDecl 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}> line:{{.*}}:{{.*}} referenced struct DefaultA definition
+// CHECK: | |-DefinitionData empty standard_layout has_user_declared_ctor can_const_default_init
+// CHECK: | | |-DefaultConstructor exists non_trivial user_provided defaulted_is_constexpr
+// CHECK: | | |-CopyConstructor simple trivial has_const_param implicit_has_const_param
+// CHECK: | | |-MoveConstructor
+// CHECK: | | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | |-MoveAssignment
+// CHECK: | | `-Destructor non_trivial user_declared
+// CHECK: | |-CXXRecordDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} implicit referenced struct DefaultA
+// CHECK: | |-CXXConstructorDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used DefaultA 'void ()' implicit-inline
+// CHECK: | | `-CompoundStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | |-CXXDestructorDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used ~DefaultA 'void () noexcept' implicit-inline
+// CHECK: | | `-CompoundStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | `-CXXConstructorDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit constexpr DefaultA 'void (const DefaultA &)' inline default trivial noexcept-unevaluated 0x{{.+}}
+// CHECK: | `-ParmVarDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} 'const DefaultA &'
+// CHECK: | `-typeDetails: LValueReferenceType 0x{{.+}} 'const DefaultA &'
+// CHECK: | `-qualTypeDetail: QualType 0x{{.+}} 'const DefaultA' const
+// CHECK: | `-typeDetails: ElaboratedType 0x{{.+}} 'DefaultA' sugar
+// CHECK: | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::DefaultA'
+// CHECK: | `-CXXRecord 0x{{.+}} 'DefaultA'
+// CHECK: |-FunctionDecl 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}> line:{{.*}}:{{.*}} used foo 'A (const A &, const DefaultA &)'
+// CHECK: | |-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} 'const A &'
+// CHECK: | | `-typeDetails: LValueReferenceType 0x{{.+}} 'const A &'
+// CHECK: | | `-qualTypeDetail: QualType 0x{{.+}} 'const A' const
+// CHECK: | | `-typeDetails: ElaboratedType 0x{{.+}} 'A' sugar
+// CHECK: | | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::A'
+// CHECK: | | `-CXXRecord 0x{{.+}} 'A'
+// CHECK: | |-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} Default 'const DefaultA &' cinit
+// CHECK: | | |-ExprWithCleanups 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const DefaultA':'const P2718R0::DefaultA' lvalue
+// CHECK: | | | `-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const DefaultA':'const P2718R0::DefaultA' lvalue
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const DefaultA':'const P2718R0::DefaultA' <NoOp>
+// CHECK: | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'DefaultA':'P2718R0::DefaultA' (CXXTemporary 0x{{.+}})
+// CHECK: | | | `-CXXTemporaryObjectExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'DefaultA':'P2718R0::DefaultA' 'void ()'
+// CHECK: | | `-typeDetails: LValueReferenceType 0x{{.+}} 'const DefaultA &'
+// CHECK: | | `-qualTypeDetail: QualType 0x{{.+}} 'const DefaultA' const
+// CHECK: | | `-typeDetails: ElaboratedType 0x{{.+}} 'DefaultA' sugar
+// CHECK: | | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::DefaultA'
+// CHECK: | | `-CXXRecord 0x{{.+}} 'DefaultA'
+// CHECK: | `-CompoundStmt 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | `-ReturnStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | `-ExprWithCleanups 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A'
+// CHECK: | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' (CXXTemporary 0x{{.+}})
+// CHECK: | `-CXXTemporaryObjectExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' 'void ()'
+// CHECK: |-FunctionDecl 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}> line:{{.*}}:{{.*}} test5 'void ()'
+// CHECK: | `-CompoundStmt 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | `-CXXForRangeStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | |-<<<NULL>>>
+// CHECK: | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} implicit used __range1 'int (&)[3]' cinit
+// CHECK: | | |-ExprWithCleanups 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int[3]' lvalue
+// CHECK: | | | `-CallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int[3]' lvalue
+// CHECK: | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int (&(*)(const A &))[3]' <FunctionToPointerDecay>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int (&(const A &))[3]' lvalue Function 0x{{.+}} 'default_arg_fn' 'int (&(const A &))[3]'
+// CHECK: | | | `-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const A':'const P2718R0::A' lvalue extended by Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const A':'const P2718R0::A' <NoOp>
+// CHECK: | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' (CXXTemporary 0x{{.+}})
+// CHECK: | | | `-CallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A'
+// CHECK: | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'A (*)(const A &, const DefaultA &)' <FunctionToPointerDecay>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'A (const A &, const DefaultA &)' lvalue Function 0x{{.+}} 'foo' 'A (const A &, const DefaultA &)'
+// CHECK: | | | |-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const A':'const P2718R0::A' lvalue extended by Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const A':'const P2718R0::A' <NoOp>
+// CHECK: | | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' (CXXTemporary 0x{{.+}})
+// CHECK: | | | | `-CallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A'
+// CHECK: | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'A (*)(const A &, const DefaultA &)' <FunctionToPointerDecay>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'A (const A &, const DefaultA &)' lvalue Function 0x{{.+}} 'foo' 'A (const A &, const DefaultA &)'
+// CHECK: | | | | |-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const A':'const P2718R0::A' lvalue extended by Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const A':'const P2718R0::A' <NoOp>
+// CHECK: | | | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' (CXXTemporary 0x{{.+}})
+// CHECK: | | | | | `-CallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A'
+// CHECK: | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'A (*)(const A &, const DefaultA &)' <FunctionToPointerDecay>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'A (const A &, const DefaultA &)' lvalue Function 0x{{.+}} 'foo' 'A (const A &, const DefaultA &)'
+// CHECK: | | | | | |-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const A':'const P2718R0::A' lvalue extended by Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const A':'const P2718R0::A' <NoOp>
+// CHECK: | | | | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' (CXXTemporary 0x{{.+}})
+// CHECK: | | | | | | `-CXXTemporaryObjectExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' 'void ()'
+// CHECK: | | | | | `-CXXDefaultArgExpr 0x{{.+}} <<invalid sloc>> 'const DefaultA':'const P2718R0::DefaultA' lvalue has rewritten init
+// CHECK: | | | | | `-MaterializeTemporaryExpr 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'const DefaultA':'const P2718R0::DefaultA' lvalue extended by Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const DefaultA':'const P2718R0::DefaultA' <NoOp>
+// CHECK: | | | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'DefaultA':'P2718R0::DefaultA' (CXXTemporary 0x{{.+}})
+// CHECK: | | | | | `-CXXTemporaryObjectExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'DefaultA':'P2718R0::DefaultA' 'void ()'
+// CHECK: | | | | `-CXXDefaultArgExpr 0x{{.+}} <<invalid sloc>> 'const DefaultA':'const P2718R0::DefaultA' lvalue has rewritten init
+// CHECK: | | | | `-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const DefaultA':'const P2718R0::DefaultA' lvalue extended by Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const DefaultA':'const P2718R0::DefaultA' <NoOp>
+// CHECK: | | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'DefaultA':'P2718R0::DefaultA' (CXXTemporary 0x{{.+}})
+// CHECK: | | | | `-CXXTemporaryObjectExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'DefaultA':'P2718R0::DefaultA' 'void ()'
+// CHECK: | | | `-CXXDefaultArgExpr 0x{{.+}} <<invalid sloc>> 'const DefaultA':'const P2718R0::DefaultA' lvalue has rewritten init
+// CHECK: | | | `-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const DefaultA':'const P2718R0::DefaultA' lvalue extended by Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const DefaultA':'const P2718R0::DefaultA' <NoOp>
+// CHECK: | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'DefaultA':'P2718R0::DefaultA' (CXXTemporary 0x{{.+}})
+// CHECK: | | | `-CXXTemporaryObjectExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'DefaultA':'P2718R0::DefaultA' 'void ()'
+// CHECK: | | `-typeDetails: LValueReferenceType 0x{{.+}} 'int (&)[3]'
+// CHECK: | | `-typeDetails: ParenType 0x{{.+}} 'int[3]' sugar
+// CHECK: | | `-typeDetails: ConstantArrayType 0x{{.+}} 'int[3]' 3
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit used __begin1 'int *' cinit
+// CHECK: | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <ArrayToPointerDecay>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int[3]' lvalue Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | `-typeDetails: AutoType 0x{{.+}} 'int *' sugar
+// CHECK: | | `-typeDetails: DecayedType 0x{{.+}} 'int *' sugar
+// CHECK: | | |-typeDetails: ParenType 0x{{.+}} 'int[3]' sugar
+// CHECK: | | | `-typeDetails: ConstantArrayType 0x{{.+}} 'int[3]' 3
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | `-typeDetails: PointerType 0x{{.+}} 'int *'
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-DeclStmt 0x{{.+}} <col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} implicit used __end1 'int *' cinit
+// CHECK: | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int *' '+'
+// CHECK: | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <ArrayToPointerDecay>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int[3]' lvalue Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'long' 3
+// CHECK: | | `-typeDetails: AutoType 0x{{.+}} 'int *' sugar
+// CHECK: | | `-typeDetails: PointerType 0x{{.+}} 'int *'
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-BinaryOperator 0x{{.+}} <col:{{.*}}> 'bool' '!='
+// CHECK: | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__begin1' 'int *'
+// CHECK: | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__end1' 'int *'
+// CHECK: | |-UnaryOperator 0x{{.+}} <col:{{.*}}> 'int *' lvalue prefix '++'
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__begin1' 'int *'
+// CHECK: | |-DeclStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used e 'int' cinit
+// CHECK: | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | `-UnaryOperator 0x{{.+}} <col:{{.*}}> 'int' lvalue prefix '*' cannot overflow
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__begin1' 'int *'
+// CHECK: | | `-typeDetails: AutoType 0x{{.+}} 'int' sugar
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | `-CallExpr 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'void'
+// CHECK: | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'void (*)(int)' <FunctionToPointerDecay>
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'void (int)' lvalue Function 0x{{.+}} 'bar' 'void (int)'
+// CHECK: | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'e' 'int'
+// CHECK: |-CXXRecordDecl 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}> line:{{.*}}:{{.*}} referenced struct C definition
+// CHECK: | |-DefinitionData standard_layout has_user_declared_ctor can_const_default_init
+// CHECK: | | |-DefaultConstructor exists non_trivial user_provided defaulted_is_constexpr
+// CHECK: | | |-CopyConstructor simple trivial has_const_param needs_overload_resolution implicit_has_const_param
+// CHECK: | | |-MoveConstructor exists simple trivial needs_overload_resolution
+// CHECK: | | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | |-MoveAssignment exists simple trivial needs_overload_resolution
+// CHECK: | | `-Destructor simple non_trivial constexpr needs_overload_resolution
+// CHECK: | |-public 'A':'P2718R0::A'
+// CHECK: | |-CXXRecordDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} implicit referenced struct C
+// CHECK: | |-CXXConstructorDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used C 'void ()' implicit-inline
+// CHECK: | | |-CXXCtorInitializer 'A':'P2718R0::A'
+// CHECK: | | | `-CXXConstructExpr 0x{{.+}} <col:{{.*}}> 'A':'P2718R0::A' 'void ()'
+// CHECK: | | `-CompoundStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | |-CXXConstructorDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used C 'void (int, const C &, const DefaultA &)' implicit-inline
+// CHECK: | | |-ParmVarDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} 'int'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} 'const C &'
+// CHECK: | | | `-typeDetails: LValueReferenceType 0x{{.+}} 'const C &'
+// CHECK: | | | `-qualTypeDetail: QualType 0x{{.+}} 'const C' const
+// CHECK: | | | `-typeDetails: ElaboratedType 0x{{.+}} 'C' sugar
+// CHECK: | | | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::C'
+// CHECK: | | | `-CXXRecord 0x{{.+}} 'C'
+// CHECK: | | |-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} 'const DefaultA &' cinit
+// CHECK: | | | |-ExprWithCleanups 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const DefaultA':'const P2718R0::DefaultA' lvalue
+// CHECK: | | | | `-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const DefaultA':'const P2718R0::DefaultA' lvalue
+// CHECK: | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const DefaultA':'const P2718R0::DefaultA' <NoOp>
+// CHECK: | | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'DefaultA':'P2718R0::DefaultA' (CXXTemporary 0x{{.+}})
+// CHECK: | | | | `-CXXTemporaryObjectExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'DefaultA':'P2718R0::DefaultA' 'void ()'
+// CHECK: | | | `-typeDetails: LValueReferenceType 0x{{.+}} 'const DefaultA &'
+// CHECK: | | | `-qualTypeDetail: QualType 0x{{.+}} 'const DefaultA' const
+// CHECK: | | | `-typeDetails: ElaboratedType 0x{{.+}} 'DefaultA' sugar
+// CHECK: | | | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::DefaultA'
+// CHECK: | | | `-CXXRecord 0x{{.+}} 'DefaultA'
+// CHECK: | | |-CXXCtorInitializer 'A':'P2718R0::A'
+// CHECK: | | | `-CXXConstructExpr 0x{{.+}} <col:{{.*}}> 'A':'P2718R0::A' 'void ()'
+// CHECK: | | `-CompoundStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | |-CXXConstructorDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit constexpr C 'void (const C &)' inline default trivial noexcept-unevaluated 0x{{.+}}
+// CHECK: | | `-ParmVarDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} 'const C &'
+// CHECK: | | `-typeDetails: LValueReferenceType 0x{{.+}} 'const C &'
+// CHECK: | | `-qualTypeDetail: QualType 0x{{.+}} 'const C' const
+// CHECK: | | `-typeDetails: ElaboratedType 0x{{.+}} 'C' sugar
+// CHECK: | | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::C'
+// CHECK: | | `-CXXRecord 0x{{.+}} 'C'
+// CHECK: | |-CXXConstructorDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit constexpr C 'void (C &&)' inline default trivial noexcept-unevaluated 0x{{.+}}
+// CHECK: | | `-ParmVarDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} 'C &&'
+// CHECK: | | `-typeDetails: RValueReferenceType 0x{{.+}} 'C &&'
+// CHECK: | | `-typeDetails: ElaboratedType 0x{{.+}} 'C' sugar
+// CHECK: | | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::C'
+// CHECK: | | `-CXXRecord 0x{{.+}} 'C'
+// CHECK: | |-CXXMethodDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit constexpr operator= 'C &(C &&)' inline default trivial noexcept-unevaluated 0x{{.+}}
+// CHECK: | | `-ParmVarDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} 'C &&'
+// CHECK: | | `-typeDetails: RValueReferenceType 0x{{.+}} 'C &&'
+// CHECK: | | `-typeDetails: ElaboratedType 0x{{.+}} 'C' sugar
+// CHECK: | | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::C'
+// CHECK: | | `-CXXRecord 0x{{.+}} 'C'
+// CHECK: | `-CXXDestructorDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit used constexpr ~C 'void () noexcept' inline default
+// CHECK: | `-CompoundStmt 0x{{.+}} <col:{{.*}}>
+// CHECK: |-FunctionDecl 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}> line:{{.*}}:{{.*}} test6 'void ()'
+// CHECK: | `-CompoundStmt 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | `-CXXForRangeStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | |-<<<NULL>>>
+// CHECK: | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} implicit used __range1 'C &&' cinit
+// CHECK: | | |-ExprWithCleanups 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'C':'P2718R0::C' xvalue
+// CHECK: | | | `-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'C':'P2718R0::C' xvalue extended by Var 0x{{.+}} '__range1' 'C &&'
+// CHECK: | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'C':'P2718R0::C' (CXXTemporary 0x{{.+}})
+// CHECK: | | | `-CXXTemporaryObjectExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'C':'P2718R0::C' 'void (int, const C &, const DefaultA &)'
+// CHECK: | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | |-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const C':'const P2718R0::C' lvalue extended by Var 0x{{.+}} '__range1' 'C &&'
+// CHECK: | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const C':'const P2718R0::C' <NoOp>
+// CHECK: | | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'C':'P2718R0::C' (CXXTemporary 0x{{.+}})
+// CHECK: | | | | `-CXXTemporaryObjectExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'C':'P2718R0::C' 'void (int, const C &, const DefaultA &)'
+// CHECK: | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | |-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const C':'const P2718R0::C' lvalue extended by Var 0x{{.+}} '__range1' 'C &&'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const C':'const P2718R0::C' <NoOp>
+// CHECK: | | | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'C':'P2718R0::C' (CXXTemporary 0x{{.+}})
+// CHECK: | | | | | `-CXXTemporaryObjectExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'C':'P2718R0::C' 'void (int, const C &, const DefaultA &)'
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | |-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const C':'const P2718R0::C' lvalue extended by Var 0x{{.+}} '__range1' 'C &&'
+// CHECK: | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const C':'const P2718R0::C' <NoOp>
+// CHECK: | | | | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'C':'P2718R0::C' (CXXTemporary 0x{{.+}})
+// CHECK: | | | | | | `-CXXTemporaryObjectExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'C':'P2718R0::C' 'void ()'
+// CHECK: | | | | | `-CXXDefaultArgExpr 0x{{.+}} <<invalid sloc>> 'const DefaultA':'const P2718R0::DefaultA' lvalue has rewritten init
+// CHECK: | | | | | `-MaterializeTemporaryExpr 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'const DefaultA':'const P2718R0::DefaultA' lvalue extended by Var 0x{{.+}} '__range1' 'C &&'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const DefaultA':'const P2718R0::DefaultA' <NoOp>
+// CHECK: | | | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'DefaultA':'P2718R0::DefaultA' (CXXTemporary 0x{{.+}})
+// CHECK: | | | | | `-CXXTemporaryObjectExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'DefaultA':'P2718R0::DefaultA' 'void ()'
+// CHECK: | | | | `-CXXDefaultArgExpr 0x{{.+}} <<invalid sloc>> 'const DefaultA':'const P2718R0::DefaultA' lvalue has rewritten init
+// CHECK: | | | | `-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const DefaultA':'const P2718R0::DefaultA' lvalue extended by Var 0x{{.+}} '__range1' 'C &&'
+// CHECK: | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const DefaultA':'const P2718R0::DefaultA' <NoOp>
+// CHECK: | | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'DefaultA':'P2718R0::DefaultA' (CXXTemporary 0x{{.+}})
+// CHECK: | | | | `-CXXTemporaryObjectExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'DefaultA':'P2718R0::DefaultA' 'void ()'
+// CHECK: | | | `-CXXDefaultArgExpr 0x{{.+}} <<invalid sloc>> 'const DefaultA':'const P2718R0::DefaultA' lvalue has rewritten init
+// CHECK: | | | `-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const DefaultA':'const P2718R0::DefaultA' lvalue extended by Var 0x{{.+}} '__range1' 'C &&'
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const DefaultA':'const P2718R0::DefaultA' <NoOp>
+// CHECK: | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'DefaultA':'P2718R0::DefaultA' (CXXTemporary 0x{{.+}})
+// CHECK: | | | `-CXXTemporaryObjectExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'DefaultA':'P2718R0::DefaultA' 'void ()'
+// CHECK: | | `-typeDetails: RValueReferenceType 0x{{.+}} 'C &&'
+// CHECK: | | `-typeDetails: AutoType 0x{{.+}} 'C' sugar
+// CHECK: | | `-typeDetails: ElaboratedType 0x{{.+}} 'C' sugar
+// CHECK: | | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::C'
+// CHECK: | | `-CXXRecord 0x{{.+}} 'C'
+// CHECK: | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit used __begin1 'const int *' cinit
+// CHECK: | | |-CXXMemberCallExpr 0x{{.+}} <col:{{.*}}> 'const int *'
+// CHECK: | | | `-MemberExpr 0x{{.+}} <col:{{.*}}> '<bound member function type>' .begin 0x{{.+}}
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'const P2718R0::A' lvalue <UncheckedDerivedToBase (A)>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'C':'P2718R0::C' lvalue Var 0x{{.+}} '__range1' 'C &&'
+// CHECK: | | `-typeDetails: AutoType 0x{{.+}} 'const int *' sugar
+// CHECK: | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-DeclStmt 0x{{.+}} <col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit used __end1 'const int *' cinit
+// CHECK: | | |-CXXMemberCallExpr 0x{{.+}} <col:{{.*}}> 'const int *'
+// CHECK: | | | `-MemberExpr 0x{{.+}} <col:{{.*}}> '<bound member function type>' .end 0x{{.+}}
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'const P2718R0::A' lvalue <UncheckedDerivedToBase (A)>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'C':'P2718R0::C' lvalue Var 0x{{.+}} '__range1' 'C &&'
+// CHECK: | | `-typeDetails: AutoType 0x{{.+}} 'const int *' sugar
+// CHECK: | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-BinaryOperator 0x{{.+}} <col:{{.*}}> 'bool' '!='
+// CHECK: | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'const int *' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const int *' lvalue Var 0x{{.+}} '__begin1' 'const int *'
+// CHECK: | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'const int *' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const int *' lvalue Var 0x{{.+}} '__end1' 'const int *'
+// CHECK: | |-UnaryOperator 0x{{.+}} <col:{{.*}}> 'const int *' lvalue prefix '++'
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const int *' lvalue Var 0x{{.+}} '__begin1' 'const int *'
+// CHECK: | |-DeclStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used e 'int' cinit
+// CHECK: | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | `-UnaryOperator 0x{{.+}} <col:{{.*}}> 'const int' lvalue prefix '*' cannot overflow
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'const int *' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const int *' lvalue Var 0x{{.+}} '__begin1' 'const int *'
+// CHECK: | | `-typeDetails: AutoType 0x{{.+}} 'int' sugar
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | `-CallExpr 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'void'
+// CHECK: | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'void (*)(int)' <FunctionToPointerDecay>
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'void (int)' lvalue Function 0x{{.+}} 'bar' 'void (int)'
+// CHECK: | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'e' 'int'
+// CHECK: |-FunctionDecl 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}> line:{{.*}}:{{.*}} test7 'void ()'
+// CHECK: | `-CompoundStmt 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | `-CXXForRangeStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | |-<<<NULL>>>
+// CHECK: | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} implicit used __range1 'A &&' cinit
+// CHECK: | | |-ExprWithCleanups 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' xvalue
+// CHECK: | | | `-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' xvalue extended by Var 0x{{.+}} '__range1' 'A &&'
+// CHECK: | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' (CXXTemporary 0x{{.+}})
+// CHECK: | | | `-CXXMemberCallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A'
+// CHECK: | | | `-MemberExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> '<bound member function type>' .g 0x{{.+}}
+// CHECK: | | | `-CXXMemberCallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' lvalue
+// CHECK: | | | `-MemberExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> '<bound member function type>' .r 0x{{.+}}
+// CHECK: | | | `-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' xvalue extended by Var 0x{{.+}} '__range1' 'A &&'
+// CHECK: | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' (CXXTemporary 0x{{.+}})
+// CHECK: | | | `-CXXMemberCallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A'
+// CHECK: | | | `-MemberExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> '<bound member function type>' .g 0x{{.+}}
+// CHECK: | | | `-CXXMemberCallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' lvalue
+// CHECK: | | | `-MemberExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> '<bound member function type>' .r 0x{{.+}}
+// CHECK: | | | `-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' xvalue extended by Var 0x{{.+}} '__range1' 'A &&'
+// CHECK: | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' (CXXTemporary 0x{{.+}})
+// CHECK: | | | `-CXXMemberCallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A'
+// CHECK: | | | `-MemberExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> '<bound member function type>' .g 0x{{.+}}
+// CHECK: | | | `-CXXMemberCallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' lvalue
+// CHECK: | | | `-MemberExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> '<bound member function type>' .r 0x{{.+}}
+// CHECK: | | | `-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' xvalue extended by Var 0x{{.+}} '__range1' 'A &&'
+// CHECK: | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' (CXXTemporary 0x{{.+}})
+// CHECK: | | | `-CallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A'
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'A (*)()' <FunctionToPointerDecay>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'A ()' lvalue Function 0x{{.+}} 'g' 'A ()'
+// CHECK: | | `-typeDetails: RValueReferenceType 0x{{.+}} 'A &&'
+// CHECK: | | `-typeDetails: AutoType 0x{{.+}} 'A' sugar
+// CHECK: | | `-typeDetails: ElaboratedType 0x{{.+}} 'A' sugar
+// CHECK: | | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::A'
+// CHECK: | | `-CXXRecord 0x{{.+}} 'A'
+// CHECK: | |-DeclStmt 0x{{.+}} <col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit used __begin1 'const int *' cinit
+// CHECK: | | |-CXXMemberCallExpr 0x{{.+}} <col:{{.*}}> 'const int *'
+// CHECK: | | | `-MemberExpr 0x{{.+}} <col:{{.*}}> '<bound member function type>' .begin 0x{{.+}}
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'const P2718R0::A' lvalue <NoOp>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'A':'P2718R0::A' lvalue Var 0x{{.+}} '__range1' 'A &&'
+// CHECK: | | `-typeDetails: AutoType 0x{{.+}} 'const int *' sugar
+// CHECK: | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-DeclStmt 0x{{.+}} <col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit used __end1 'const int *' cinit
+// CHECK: | | |-CXXMemberCallExpr 0x{{.+}} <col:{{.*}}> 'const int *'
+// CHECK: | | | `-MemberExpr 0x{{.+}} <col:{{.*}}> '<bound member function type>' .end 0x{{.+}}
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'const P2718R0::A' lvalue <NoOp>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'A':'P2718R0::A' lvalue Var 0x{{.+}} '__range1' 'A &&'
+// CHECK: | | `-typeDetails: AutoType 0x{{.+}} 'const int *' sugar
+// CHECK: | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-BinaryOperator 0x{{.+}} <col:{{.*}}> 'bool' '!='
+// CHECK: | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'const int *' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const int *' lvalue Var 0x{{.+}} '__begin1' 'const int *'
+// CHECK: | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'const int *' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const int *' lvalue Var 0x{{.+}} '__end1' 'const int *'
+// CHECK: | |-UnaryOperator 0x{{.+}} <col:{{.*}}> 'const int *' lvalue prefix '++'
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const int *' lvalue Var 0x{{.+}} '__begin1' 'const int *'
+// CHECK: | |-DeclStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used e 'int' cinit
+// CHECK: | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | `-UnaryOperator 0x{{.+}} <col:{{.*}}> 'const int' lvalue prefix '*' cannot overflow
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'const int *' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const int *' lvalue Var 0x{{.+}} '__begin1' 'const int *'
+// CHECK: | | `-typeDetails: AutoType 0x{{.+}} 'int' sugar
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | `-CallExpr 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'void'
+// CHECK: | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'void (*)(int)' <FunctionToPointerDecay>
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'void (int)' lvalue Function 0x{{.+}} 'bar' 'void (int)'
+// CHECK: | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'e' 'int'
+// CHECK: |-FunctionTemplateDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} dg
+// CHECK: | |-TemplateTypeParmDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} referenced typename depth 0 index 0 T
+// CHECK: | |-FunctionDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} dg 'T ()'
+// CHECK: | | `-CompoundStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | `-ReturnStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | `-CXXUnresolvedConstructExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'T' 'T'
+// CHECK: | `-FunctionDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used dg 'P2718R0::A ()' implicit_instantiation
+// CHECK: | |-TemplateArgument type 'P2718R0::A'
+// CHECK: | | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::A'
+// CHECK: | | `-CXXRecord 0x{{.+}} 'A'
+// CHECK: | `-CompoundStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | `-ReturnStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | `-ExprWithCleanups 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'P2718R0::A'
+// CHECK: | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'P2718R0::A' (CXXTemporary 0x{{.+}})
+// CHECK: | `-CXXTemporaryObjectExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'P2718R0::A' 'void ()'
+// CHECK: |-FunctionTemplateDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} df1
+// CHECK: | |-TemplateTypeParmDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} referenced typename depth 0 index 0 T
+// CHECK: | |-FunctionDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} df1 'const T &(const T &)'
+// CHECK: | | |-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} referenced t 'const T &'
+// CHECK: | | | `-typeDetails: LValueReferenceType 0x{{.+}} 'const T &' dependent
+// CHECK: | | | `-qualTypeDetail: QualType 0x{{.+}} 'const T' const
+// CHECK: | | | `-typeDetails: TemplateTypeParmType 0x{{.+}} 'T' dependent depth 0 index 0
+// CHECK: | | | `-TemplateTypeParm 0x{{.+}} 'T'
+// CHECK: | | `-CompoundStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | `-ReturnStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const T' lvalue ParmVar 0x{{.+}} 't' 'const T &'
+// CHECK: | |-FunctionDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used df1 'const P2718R0::A &(const P2718R0::A &)' implicit_instantiation
+// CHECK: | | |-TemplateArgument type 'P2718R0::A'
+// CHECK: | | | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::A'
+// CHECK: | | | `-CXXRecord 0x{{.+}} 'A'
+// CHECK: | | |-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used t 'const P2718R0::A &'
+// CHECK: | | | `-typeDetails: LValueReferenceType 0x{{.+}} 'const P2718R0::A &'
+// CHECK: | | | `-qualTypeDetail: QualType 0x{{.+}} 'const P2718R0::A' const
+// CHECK: | | | `-typeDetails: SubstTemplateTypeParmType 0x{{.+}} 'P2718R0::A' sugar typename depth 0 index 0 T
+// CHECK: | | | |-FunctionTemplate 0x{{.+}} 'df1'
+// CHECK: | | | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::A'
+// CHECK: | | | `-CXXRecord 0x{{.+}} 'A'
+// CHECK: | | `-CompoundStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | `-ReturnStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const P2718R0::A' lvalue ParmVar 0x{{.+}} 't' 'const P2718R0::A &'
+// CHECK: | `-FunctionDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used df1 'const P2718R0::LockGuard &(const P2718R0::LockGuard &)' implicit_instantiation
+// CHECK: | |-TemplateArgument type 'P2718R0::LockGuard'
+// CHECK: | | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::LockGuard'
+// CHECK: | | `-CXXRecord 0x{{.+}} 'LockGuard'
+// CHECK: | |-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used t 'const P2718R0::LockGuard &'
+// CHECK: | | `-typeDetails: LValueReferenceType 0x{{.+}} 'const P2718R0::LockGuard &'
+// CHECK: | | `-qualTypeDetail: QualType 0x{{.+}} 'const P2718R0::LockGuard' const
+// CHECK: | | `-typeDetails: SubstTemplateTypeParmType 0x{{.+}} 'P2718R0::LockGuard' sugar typename depth 0 index 0 T
+// CHECK: | | |-FunctionTemplate 0x{{.+}} 'df1'
+// CHECK: | | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::LockGuard'
+// CHECK: | | `-CXXRecord 0x{{.+}} 'LockGuard'
+// CHECK: | `-CompoundStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | `-ReturnStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const P2718R0::LockGuard' lvalue ParmVar 0x{{.+}} 't' 'const P2718R0::LockGuard &'
+// CHECK: |-FunctionDecl 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}> line:{{.*}}:{{.*}} test8 'void ()'
+// CHECK: | `-CompoundStmt 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used sum 'int' cinit
+// CHECK: | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | |-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | `-attrDetails: UnusedAttr 0x{{.+}} <col:{{.*}}> maybe_unused
+// CHECK: | `-CXXForRangeStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | |-<<<NULL>>>
+// CHECK: | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} implicit used __range1 'const P2718R0::A &' cinit
+// CHECK: | | |-ExprWithCleanups 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const P2718R0::A' lvalue
+// CHECK: | | | `-CallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const P2718R0::A' lvalue
+// CHECK: | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'const P2718R0::A &(*)(const P2718R0::A &)' <FunctionToPointerDecay>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const P2718R0::A &(const P2718R0::A &)' lvalue Function 0x{{.+}} 'df1' 'const P2718R0::A &(const P2718R0::A &)' (FunctionTemplate 0x{{.+}} 'df1')
+// CHECK: | | | `-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const P2718R0::A' lvalue extended by Var 0x{{.+}} '__range1' 'const P2718R0::A &'
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const P2718R0::A' <NoOp>
+// CHECK: | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'P2718R0::A' (CXXTemporary 0x{{.+}})
+// CHECK: | | | `-CallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'P2718R0::A'
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'P2718R0::A (*)()' <FunctionToPointerDecay>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'P2718R0::A ()' lvalue Function 0x{{.+}} 'dg' 'P2718R0::A ()' (FunctionTemplate 0x{{.+}} 'dg')
+// CHECK: | | `-typeDetails: LValueReferenceType 0x{{.+}} 'const P2718R0::A &'
+// CHECK: | | `-qualTypeDetail: QualType 0x{{.+}} 'const P2718R0::A' const
+// CHECK: | | `-typeDetails: SubstTemplateTypeParmType 0x{{.+}} 'P2718R0::A' sugar typename depth 0 index 0 T
+// CHECK: | | |-FunctionTemplate 0x{{.+}} 'df1'
+// CHECK: | | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::A'
+// CHECK: | | `-CXXRecord 0x{{.+}} 'A'
+// CHECK: | |-DeclStmt 0x{{.+}} <col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit used __begin1 'const int *' cinit
+// CHECK: | | |-CXXMemberCallExpr 0x{{.+}} <col:{{.*}}> 'const int *'
+// CHECK: | | | `-MemberExpr 0x{{.+}} <col:{{.*}}> '<bound member function type>' .begin 0x{{.+}}
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const P2718R0::A' lvalue Var 0x{{.+}} '__range1' 'const P2718R0::A &'
+// CHECK: | | `-typeDetails: AutoType 0x{{.+}} 'const int *' sugar
+// CHECK: | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-DeclStmt 0x{{.+}} <col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit used __end1 'const int *' cinit
+// CHECK: | | |-CXXMemberCallExpr 0x{{.+}} <col:{{.*}}> 'const int *'
+// CHECK: | | | `-MemberExpr 0x{{.+}} <col:{{.*}}> '<bound member function type>' .end 0x{{.+}}
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const P2718R0::A' lvalue Var 0x{{.+}} '__range1' 'const P2718R0::A &'
+// CHECK: | | `-typeDetails: AutoType 0x{{.+}} 'const int *' sugar
+// CHECK: | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-BinaryOperator 0x{{.+}} <col:{{.*}}> 'bool' '!='
+// CHECK: | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'const int *' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const int *' lvalue Var 0x{{.+}} '__begin1' 'const int *'
+// CHECK: | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'const int *' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const int *' lvalue Var 0x{{.+}} '__end1' 'const int *'
+// CHECK: | |-UnaryOperator 0x{{.+}} <col:{{.*}}> 'const int *' lvalue prefix '++'
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const int *' lvalue Var 0x{{.+}} '__begin1' 'const int *'
+// CHECK: | |-DeclStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used e 'int' cinit
+// CHECK: | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | `-UnaryOperator 0x{{.+}} <col:{{.*}}> 'const int' lvalue prefix '*' cannot overflow
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'const int *' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const int *' lvalue Var 0x{{.+}} '__begin1' 'const int *'
+// CHECK: | | `-typeDetails: AutoType 0x{{.+}} 'int' sugar
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | `-CompoundAssignOperator 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'int' lvalue '+=' ComputeLHSTy='int' ComputeResultTy='int'
+// CHECK: | |-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'sum' 'int'
+// CHECK: | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'e' 'int'
+// CHECK: |-FunctionTemplateDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} df2
+// CHECK: | |-TemplateTypeParmDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} referenced typename depth 0 index 0 T
+// CHECK: | |-FunctionDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} df2 'int (&(const T *))[3]'
+// CHECK: | | `-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} 'const T *'
+// CHECK: | | `-typeDetails: PointerType 0x{{.+}} 'const T *' dependent
+// CHECK: | | `-qualTypeDetail: QualType 0x{{.+}} 'const T' const
+// CHECK: | | `-typeDetails: TemplateTypeParmType 0x{{.+}} 'T' dependent depth 0 index 0
+// CHECK: | | `-TemplateTypeParm 0x{{.+}} 'T'
+// CHECK: | `-FunctionDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used df2 'int (&(const P2718R0::A *))[3]' implicit_instantiation
+// CHECK: | |-TemplateArgument type 'P2718R0::A'
+// CHECK: | | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::A'
+// CHECK: | | `-CXXRecord 0x{{.+}} 'A'
+// CHECK: | `-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} 'const P2718R0::A *'
+// CHECK: | `-typeDetails: PointerType 0x{{.+}} 'const P2718R0::A *'
+// CHECK: | `-qualTypeDetail: QualType 0x{{.+}} 'const P2718R0::A' const
+// CHECK: | `-typeDetails: SubstTemplateTypeParmType 0x{{.+}} 'P2718R0::A' sugar typename depth 0 index 0 T
+// CHECK: | |-FunctionTemplate 0x{{.+}} 'df2'
+// CHECK: | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::A'
+// CHECK: | `-CXXRecord 0x{{.+}} 'A'
+// CHECK: |-FunctionDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used dg2 'const A *(const A &)'
+// CHECK: | `-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} 'const A &'
+// CHECK: | `-typeDetails: LValueReferenceType 0x{{.+}} 'const A &'
+// CHECK: | `-qualTypeDetail: QualType 0x{{.+}} 'const A' const
+// CHECK: | `-typeDetails: ElaboratedType 0x{{.+}} 'A' sugar
+// CHECK: | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::A'
+// CHECK: | `-CXXRecord 0x{{.+}} 'A'
+// CHECK: |-FunctionDecl 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}> line:{{.*}}:{{.*}} test9 'void ()'
+// CHECK: | `-CompoundStmt 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | `-CXXForRangeStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | |-<<<NULL>>>
+// CHECK: | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} implicit used __range1 'int (&)[3]' cinit
+// CHECK: | | |-ExprWithCleanups 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int[3]' lvalue
+// CHECK: | | | `-CallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int[3]' lvalue
+// CHECK: | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int (&(*)(const P2718R0::A *))[3]' <FunctionToPointerDecay>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int (&(const P2718R0::A *))[3]' lvalue Function 0x{{.+}} 'df2' 'int (&(const P2718R0::A *))[3]' (FunctionTemplate 0x{{.+}} 'df2')
+// CHECK: | | | `-CallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const A *'
+// CHECK: | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'const A *(*)(const A &)' <FunctionToPointerDecay>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const A *(const A &)' lvalue Function 0x{{.+}} 'dg2' 'const A *(const A &)'
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const A':'const P2718R0::A' lvalue <DerivedToBase (A)>
+// CHECK: | | | `-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const B':'const P2718R0::B' lvalue extended by Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const B':'const P2718R0::B' <NoOp>
+// CHECK: | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'B':'P2718R0::B' (CXXTemporary 0x{{.+}})
+// CHECK: | | | `-CXXTemporaryObjectExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'B':'P2718R0::B' 'void () noexcept(false)' zeroing
+// CHECK: | | `-typeDetails: LValueReferenceType 0x{{.+}} 'int (&)[3]'
+// CHECK: | | `-typeDetails: ParenType 0x{{.+}} 'int[3]' sugar
+// CHECK: | | `-typeDetails: ConstantArrayType 0x{{.+}} 'int[3]' 3
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-DeclStmt 0x{{.+}} <col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit used __begin1 'int *' cinit
+// CHECK: | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <ArrayToPointerDecay>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int[3]' lvalue Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | `-typeDetails: AutoType 0x{{.+}} 'int *' sugar
+// CHECK: | | `-typeDetails: DecayedType 0x{{.+}} 'int *' sugar
+// CHECK: | | |-typeDetails: ParenType 0x{{.+}} 'int[3]' sugar
+// CHECK: | | | `-typeDetails: ConstantArrayType 0x{{.+}} 'int[3]' 3
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | `-typeDetails: PointerType 0x{{.+}} 'int *'
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-DeclStmt 0x{{.+}} <col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} implicit used __end1 'int *' cinit
+// CHECK: | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int *' '+'
+// CHECK: | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <ArrayToPointerDecay>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int[3]' lvalue Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'long' 3
+// CHECK: | | `-typeDetails: AutoType 0x{{.+}} 'int *' sugar
+// CHECK: | | `-typeDetails: PointerType 0x{{.+}} 'int *'
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-BinaryOperator 0x{{.+}} <col:{{.*}}> 'bool' '!='
+// CHECK: | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__begin1' 'int *'
+// CHECK: | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__end1' 'int *'
+// CHECK: | |-UnaryOperator 0x{{.+}} <col:{{.*}}> 'int *' lvalue prefix '++'
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__begin1' 'int *'
+// CHECK: | |-DeclStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used e 'int' cinit
+// CHECK: | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | `-UnaryOperator 0x{{.+}} <col:{{.*}}> 'int' lvalue prefix '*' cannot overflow
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__begin1' 'int *'
+// CHECK: | | `-typeDetails: AutoType 0x{{.+}} 'int' sugar
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | `-CallExpr 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'void'
+// CHECK: | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'void (*)(int)' <FunctionToPointerDecay>
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'void (int)' lvalue Function 0x{{.+}} 'bar' 'void (int)'
+// CHECK: | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'e' 'int'
+// CHECK: |-FunctionDecl 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}> line:{{.*}}:{{.*}} test10 'void ()'
+// CHECK: | `-CompoundStmt 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used v 'int[3]' cinit
+// CHECK: | | |-InitListExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int[3]'
+// CHECK: | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 42
+// CHECK: | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 17
+// CHECK: | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 13
+// CHECK: | | `-typeDetails: ConstantArrayType 0x{{.+}} 'int[3]' 3
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-CXXForRangeStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} implicit used __range1 'int (&)[3]' cinit
+// CHECK: | | | |-ExprWithCleanups 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int[3]' lvalue
+// CHECK: | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int[3]' lvalue ','
+// CHECK: | | | | |-CXXStaticCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'void' static_cast<void> <ToVoid>
+// CHECK: | | | | | `-CallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const P2718R0::LockGuard' lvalue
+// CHECK: | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'const P2718R0::LockGuard &(*)(const P2718R0::LockGuard &)' <FunctionToPointerDecay>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const P2718R0::LockGuard &(const P2718R0::LockGuard &)' lvalue Function 0x{{.+}} 'df1' 'const P2718R0::LockGuard &(const P2718R0::LockGuard &)' (FunctionTemplate 0x{{.+}} 'df1')
+// CHECK: | | | | | `-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const LockGuard':'const P2718R0::LockGuard' lvalue extended by Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const LockGuard':'const P2718R0::LockGuard' <NoOp>
+// CHECK: | | | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'LockGuard':'P2718R0::LockGuard' (CXXTemporary 0x{{.+}})
+// CHECK: | | | | | `-CXXTemporaryObjectExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'LockGuard':'P2718R0::LockGuard' 'void ()'
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int[3]' lvalue Var 0x{{.+}} 'v' 'int[3]'
+// CHECK: | | | `-typeDetails: LValueReferenceType 0x{{.+}} 'int (&)[3]'
+// CHECK: | | | `-typeDetails: ConstantArrayType 0x{{.+}} 'int[3]' 3
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-DeclStmt 0x{{.+}} <col:{{.*}}>
+// CHECK: | | | `-VarDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit used __begin1 'int *' cinit
+// CHECK: | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <ArrayToPointerDecay>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int[3]' lvalue Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | `-typeDetails: AutoType 0x{{.+}} 'int *' sugar
+// CHECK: | | | `-typeDetails: DecayedType 0x{{.+}} 'int *' sugar
+// CHECK: | | | |-typeDetails: ConstantArrayType 0x{{.+}} 'int[3]' 3
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | `-typeDetails: PointerType 0x{{.+}} 'int *'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-DeclStmt 0x{{.+}} <col:{{.*}}>
+// CHECK: | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} implicit used __end1 'int *' cinit
+// CHECK: | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int *' '+'
+// CHECK: | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <ArrayToPointerDecay>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int[3]' lvalue Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'long' 3
+// CHECK: | | | `-typeDetails: AutoType 0x{{.+}} 'int *' sugar
+// CHECK: | | | `-typeDetails: PointerType 0x{{.+}} 'int *'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-BinaryOperator 0x{{.+}} <col:{{.*}}> 'bool' '!='
+// CHECK: | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__begin1' 'int *'
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__end1' 'int *'
+// CHECK: | | |-UnaryOperator 0x{{.+}} <col:{{.*}}> 'int *' lvalue prefix '++'
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__begin1' 'int *'
+// CHECK: | | |-DeclStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} x 'int' cinit
+// CHECK: | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | `-UnaryOperator 0x{{.+}} <col:{{.*}}> 'int' lvalue prefix '*' cannot overflow
+// CHECK: | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__begin1' 'int *'
+// CHECK: | | | |-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | `-attrDetails: UnusedAttr 0x{{.+}} <col:{{.*}}> maybe_unused
+// CHECK: | | `-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} guard 'LockGuard':'P2718R0::LockGuard' callinit destroyed
+// CHECK: | | |-CXXConstructExpr 0x{{.+}} <col:{{.*}}> 'LockGuard':'P2718R0::LockGuard' 'void ()'
+// CHECK: | | `-typeDetails: ElaboratedType 0x{{.+}} 'LockGuard' sugar
+// CHECK: | | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::LockGuard'
+// CHECK: | | `-CXXRecord 0x{{.+}} 'LockGuard'
+// CHECK: | |-CXXForRangeStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} implicit used __range1 'int (&)[3]' cinit
+// CHECK: | | | |-ExprWithCleanups 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int[3]' lvalue
+// CHECK: | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int[3]' lvalue ','
+// CHECK: | | | | |-CStyleCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'void' <ToVoid>
+// CHECK: | | | | | `-CallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const P2718R0::LockGuard' lvalue
+// CHECK: | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'const P2718R0::LockGuard &(*)(const P2718R0::LockGuard &)' <FunctionToPointerDecay>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const P2718R0::LockGuard &(const P2718R0::LockGuard &)' lvalue Function 0x{{.+}} 'df1' 'const P2718R0::LockGuard &(const P2718R0::LockGuard &)' (FunctionTemplate 0x{{.+}} 'df1')
+// CHECK: | | | | | `-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const LockGuard':'const P2718R0::LockGuard' lvalue extended by Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const LockGuard':'const P2718R0::LockGuard' <NoOp>
+// CHECK: | | | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'LockGuard':'P2718R0::LockGuard' (CXXTemporary 0x{{.+}})
+// CHECK: | | | | | `-CXXTemporaryObjectExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'LockGuard':'P2718R0::LockGuard' 'void ()'
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int[3]' lvalue Var 0x{{.+}} 'v' 'int[3]'
+// CHECK: | | | `-typeDetails: LValueReferenceType 0x{{.+}} 'int (&)[3]'
+// CHECK: | | | `-typeDetails: ConstantArrayType 0x{{.+}} 'int[3]' 3
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-DeclStmt 0x{{.+}} <col:{{.*}}>
+// CHECK: | | | `-VarDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit used __begin1 'int *' cinit
+// CHECK: | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <ArrayToPointerDecay>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int[3]' lvalue Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | `-typeDetails: AutoType 0x{{.+}} 'int *' sugar
+// CHECK: | | | `-typeDetails: DecayedType 0x{{.+}} 'int *' sugar
+// CHECK: | | | |-typeDetails: ConstantArrayType 0x{{.+}} 'int[3]' 3
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | `-typeDetails: PointerType 0x{{.+}} 'int *'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-DeclStmt 0x{{.+}} <col:{{.*}}>
+// CHECK: | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} implicit used __end1 'int *' cinit
+// CHECK: | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int *' '+'
+// CHECK: | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <ArrayToPointerDecay>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int[3]' lvalue Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'long' 3
+// CHECK: | | | `-typeDetails: AutoType 0x{{.+}} 'int *' sugar
+// CHECK: | | | `-typeDetails: PointerType 0x{{.+}} 'int *'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-BinaryOperator 0x{{.+}} <col:{{.*}}> 'bool' '!='
+// CHECK: | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__begin1' 'int *'
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__end1' 'int *'
+// CHECK: | | |-UnaryOperator 0x{{.+}} <col:{{.*}}> 'int *' lvalue prefix '++'
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__begin1' 'int *'
+// CHECK: | | |-DeclStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} x 'int' cinit
+// CHECK: | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | `-UnaryOperator 0x{{.+}} <col:{{.*}}> 'int' lvalue prefix '*' cannot overflow
+// CHECK: | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__begin1' 'int *'
+// CHECK: | | | |-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | `-attrDetails: UnusedAttr 0x{{.+}} <col:{{.*}}> maybe_unused
+// CHECK: | | `-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} guard 'LockGuard':'P2718R0::LockGuard' callinit destroyed
+// CHECK: | | |-CXXConstructExpr 0x{{.+}} <col:{{.*}}> 'LockGuard':'P2718R0::LockGuard' 'void ()'
+// CHECK: | | `-typeDetails: ElaboratedType 0x{{.+}} 'LockGuard' sugar
+// CHECK: | | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::LockGuard'
+// CHECK: | | `-CXXRecord 0x{{.+}} 'LockGuard'
+// CHECK: | `-CXXForRangeStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | |-<<<NULL>>>
+// CHECK: | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} implicit used __range1 'int (&)[3]' cinit
+// CHECK: | | |-ExprWithCleanups 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int[3]' lvalue
+// CHECK: | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int[3]' lvalue ','
+// CHECK: | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const P2718R0::LockGuard' lvalue ','
+// CHECK: | | | | |-CallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const P2718R0::LockGuard' lvalue
+// CHECK: | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'const P2718R0::LockGuard &(*)(const P2718R0::LockGuard &)' <FunctionToPointerDecay>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const P2718R0::LockGuard &(const P2718R0::LockGuard &)' lvalue Function 0x{{.+}} 'df1' 'const P2718R0::LockGuard &(const P2718R0::LockGuard &)' (FunctionTemplate 0x{{.+}} 'df1')
+// CHECK: | | | | | `-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const LockGuard':'const P2718R0::LockGuard' lvalue extended by Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const LockGuard':'const P2718R0::LockGuard' <NoOp>
+// CHECK: | | | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'LockGuard':'P2718R0::LockGuard' (CXXTemporary 0x{{.+}})
+// CHECK: | | | | | `-CXXTemporaryObjectExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'LockGuard':'P2718R0::LockGuard' 'void ()'
+// CHECK: | | | | `-CallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const P2718R0::LockGuard' lvalue
+// CHECK: | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'const P2718R0::LockGuard &(*)(const P2718R0::LockGuard &)' <FunctionToPointerDecay>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const P2718R0::LockGuard &(const P2718R0::LockGuard &)' lvalue Function 0x{{.+}} 'df1' 'const P2718R0::LockGuard &(const P2718R0::LockGuard &)' (FunctionTemplate 0x{{.+}} 'df1')
+// CHECK: | | | | `-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const LockGuard':'const P2718R0::LockGuard' lvalue extended by Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const LockGuard':'const P2718R0::LockGuard' <NoOp>
+// CHECK: | | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'LockGuard':'P2718R0::LockGuard' (CXXTemporary 0x{{.+}})
+// CHECK: | | | | `-CXXTemporaryObjectExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'LockGuard':'P2718R0::LockGuard' 'void ()'
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int[3]' lvalue Var 0x{{.+}} 'v' 'int[3]'
+// CHECK: | | `-typeDetails: LValueReferenceType 0x{{.+}} 'int (&)[3]'
+// CHECK: | | `-typeDetails: ConstantArrayType 0x{{.+}} 'int[3]' 3
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-DeclStmt 0x{{.+}} <col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit used __begin1 'int *' cinit
+// CHECK: | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <ArrayToPointerDecay>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int[3]' lvalue Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | `-typeDetails: AutoType 0x{{.+}} 'int *' sugar
+// CHECK: | | `-typeDetails: DecayedType 0x{{.+}} 'int *' sugar
+// CHECK: | | |-typeDetails: ConstantArrayType 0x{{.+}} 'int[3]' 3
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | `-typeDetails: PointerType 0x{{.+}} 'int *'
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-DeclStmt 0x{{.+}} <col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} implicit used __end1 'int *' cinit
+// CHECK: | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int *' '+'
+// CHECK: | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <ArrayToPointerDecay>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int[3]' lvalue Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'long' 3
+// CHECK: | | `-typeDetails: AutoType 0x{{.+}} 'int *' sugar
+// CHECK: | | `-typeDetails: PointerType 0x{{.+}} 'int *'
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-BinaryOperator 0x{{.+}} <col:{{.*}}> 'bool' '!='
+// CHECK: | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__begin1' 'int *'
+// CHECK: | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__end1' 'int *'
+// CHECK: | |-UnaryOperator 0x{{.+}} <col:{{.*}}> 'int *' lvalue prefix '++'
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__begin1' 'int *'
+// CHECK: | |-DeclStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} x 'int' cinit
+// CHECK: | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | `-UnaryOperator 0x{{.+}} <col:{{.*}}> 'int' lvalue prefix '*' cannot overflow
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__begin1' 'int *'
+// CHECK: | | |-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | `-attrDetails: UnusedAttr 0x{{.+}} <col:{{.*}}> maybe_unused
+// CHECK: | `-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} guard 'LockGuard':'P2718R0::LockGuard' callinit destroyed
+// CHECK: | |-CXXConstructExpr 0x{{.+}} <col:{{.*}}> 'LockGuard':'P2718R0::LockGuard' 'void ()'
+// CHECK: | `-typeDetails: ElaboratedType 0x{{.+}} 'LockGuard' sugar
+// CHECK: | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::LockGuard'
+// CHECK: | `-CXXRecord 0x{{.+}} 'LockGuard'
+// CHECK: |-FunctionTemplateDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} default_arg_fn2
+// CHECK: | |-TemplateTypeParmDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} referenced typename depth 0 index 0 T
+// CHECK: | |-FunctionDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} default_arg_fn2 'int (&(const T &))[3]'
+// CHECK: | | `-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} 'const T &' cinit
+// CHECK: | | |-CXXUnresolvedConstructExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'T' 'T'
+// CHECK: | | `-typeDetails: LValueReferenceType 0x{{.+}} 'const T &' dependent
+// CHECK: | | `-qualTypeDetail: QualType 0x{{.+}} 'const T' const
+// CHECK: | | `-typeDetails: TemplateTypeParmType 0x{{.+}} 'T' dependent depth 0 index 0
+// CHECK: | | `-TemplateTypeParm 0x{{.+}} 'T'
+// CHECK: | `-FunctionDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used default_arg_fn2 'int (&(const P2718R0::A &))[3]' implicit_instantiation
+// CHECK: | |-TemplateArgument type 'P2718R0::A'
+// CHECK: | | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::A'
+// CHECK: | | `-CXXRecord 0x{{.+}} 'A'
+// CHECK: | `-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} 'const P2718R0::A &' cinit
+// CHECK: | |-ExprWithCleanups 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const P2718R0::A' lvalue
+// CHECK: | | `-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const P2718R0::A' lvalue
+// CHECK: | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const P2718R0::A' <NoOp>
+// CHECK: | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'P2718R0::A' (CXXTemporary 0x{{.+}})
+// CHECK: | | `-CXXTemporaryObjectExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'P2718R0::A' 'void ()'
+// CHECK: | `-typeDetails: LValueReferenceType 0x{{.+}} 'const P2718R0::A &'
+// CHECK: | `-qualTypeDetail: QualType 0x{{.+}} 'const P2718R0::A' const
+// CHECK: | `-typeDetails: SubstTemplateTypeParmType 0x{{.+}} 'P2718R0::A' sugar typename depth 0 index 0 T
+// CHECK: | |-FunctionTemplate 0x{{.+}} 'default_arg_fn2'
+// CHECK: | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::A'
+// CHECK: | `-CXXRecord 0x{{.+}} 'A'
+// CHECK: |-FunctionDecl 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}> line:{{.*}}:{{.*}} test11 'void ()'
+// CHECK: | `-CompoundStmt 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | `-CXXForRangeStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | |-<<<NULL>>>
+// CHECK: | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} implicit used __range1 'int (&)[3]' cinit
+// CHECK: | | |-ExprWithCleanups 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int[3]' lvalue
+// CHECK: | | | `-CallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int[3]' lvalue
+// CHECK: | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int (&(*)(const P2718R0::A &))[3]' <FunctionToPointerDecay>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int (&(const P2718R0::A &))[3]' lvalue Function 0x{{.+}} 'default_arg_fn2' 'int (&(const P2718R0::A &))[3]' (FunctionTemplate 0x{{.+}} 'default_arg_fn2')
+// CHECK: | | | `-CXXDefaultArgExpr 0x{{.+}} <<invalid sloc>> 'const P2718R0::A' lvalue has rewritten init
+// CHECK: | | | `-MaterializeTemporaryExpr 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'const P2718R0::A' lvalue extended by Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const P2718R0::A' <NoOp>
+// CHECK: | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'P2718R0::A' (CXXTemporary 0x{{.+}})
+// CHECK: | | | `-CXXTemporaryObjectExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'P2718R0::A' 'void ()'
+// CHECK: | | `-typeDetails: LValueReferenceType 0x{{.+}} 'int (&)[3]'
+// CHECK: | | `-typeDetails: ParenType 0x{{.+}} 'int[3]' sugar
+// CHECK: | | `-typeDetails: ConstantArrayType 0x{{.+}} 'int[3]' 3
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit used __begin1 'int *' cinit
+// CHECK: | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <ArrayToPointerDecay>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int[3]' lvalue Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | `-typeDetails: AutoType 0x{{.+}} 'int *' sugar
+// CHECK: | | `-typeDetails: DecayedType 0x{{.+}} 'int *' sugar
+// CHECK: | | |-typeDetails: ParenType 0x{{.+}} 'int[3]' sugar
+// CHECK: | | | `-typeDetails: ConstantArrayType 0x{{.+}} 'int[3]' 3
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | `-typeDetails: PointerType 0x{{.+}} 'int *'
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-DeclStmt 0x{{.+}} <col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} implicit used __end1 'int *' cinit
+// CHECK: | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int *' '+'
+// CHECK: | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <ArrayToPointerDecay>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int[3]' lvalue Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'long' 3
+// CHECK: | | `-typeDetails: AutoType 0x{{.+}} 'int *' sugar
+// CHECK: | | `-typeDetails: PointerType 0x{{.+}} 'int *'
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-BinaryOperator 0x{{.+}} <col:{{.*}}> 'bool' '!='
+// CHECK: | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__begin1' 'int *'
+// CHECK: | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__end1' 'int *'
+// CHECK: | |-UnaryOperator 0x{{.+}} <col:{{.*}}> 'int *' lvalue prefix '++'
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__begin1' 'int *'
+// CHECK: | |-DeclStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used e 'int' cinit
+// CHECK: | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | `-UnaryOperator 0x{{.+}} <col:{{.*}}> 'int' lvalue prefix '*' cannot overflow
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__begin1' 'int *'
+// CHECK: | | `-typeDetails: AutoType 0x{{.+}} 'int' sugar
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | `-CallExpr 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'void'
+// CHECK: | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'void (*)(int)' <FunctionToPointerDecay>
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'void (int)' lvalue Function 0x{{.+}} 'bar' 'void (int)'
+// CHECK: | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'e' 'int'
+// CHECK: |-FunctionTemplateDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} foo2
+// CHECK: | |-TemplateTypeParmDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} referenced typename depth 0 index 0 T
+// CHECK: | |-FunctionDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} foo2 'A (const T &, const DefaultA &)'
+// CHECK: | | |-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} 'const T &'
+// CHECK: | | | `-typeDetails: LValueReferenceType 0x{{.+}} 'const T &' dependent
+// CHECK: | | | `-qualTypeDetail: QualType 0x{{.+}} 'const T' const
+// CHECK: | | | `-typeDetails: TemplateTypeParmType 0x{{.+}} 'T' dependent depth 0 index 0
+// CHECK: | | | `-TemplateTypeParm 0x{{.+}} 'T'
+// CHECK: | | `-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} Default 'const DefaultA &' cinit
+// CHECK: | | |-ExprWithCleanups 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const DefaultA':'const P2718R0::DefaultA' lvalue
+// CHECK: | | | `-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const DefaultA':'const P2718R0::DefaultA' lvalue
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const DefaultA':'const P2718R0::DefaultA' <NoOp>
+// CHECK: | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'DefaultA':'P2718R0::DefaultA' (CXXTemporary 0x{{.+}})
+// CHECK: | | | `-CXXTemporaryObjectExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'DefaultA':'P2718R0::DefaultA' 'void ()'
+// CHECK: | | `-typeDetails: LValueReferenceType 0x{{.+}} 'const DefaultA &'
+// CHECK: | | `-qualTypeDetail: QualType 0x{{.+}} 'const DefaultA' const
+// CHECK: | | `-typeDetails: ElaboratedType 0x{{.+}} 'DefaultA' sugar
+// CHECK: | | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::DefaultA'
+// CHECK: | | `-CXXRecord 0x{{.+}} 'DefaultA'
+// CHECK: | `-FunctionDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used foo2 'A (const P2718R0::A &, const DefaultA &)' implicit_instantiation
+// CHECK: | |-TemplateArgument type 'P2718R0::A'
+// CHECK: | | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::A'
+// CHECK: | | `-CXXRecord 0x{{.+}} 'A'
+// CHECK: | |-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} 'const P2718R0::A &'
+// CHECK: | | `-typeDetails: LValueReferenceType 0x{{.+}} 'const P2718R0::A &'
+// CHECK: | | `-qualTypeDetail: QualType 0x{{.+}} 'const P2718R0::A' const
+// CHECK: | | `-typeDetails: SubstTemplateTypeParmType 0x{{.+}} 'P2718R0::A' sugar typename depth 0 index 0 T
+// CHECK: | | |-FunctionTemplate 0x{{.+}} 'foo2'
+// CHECK: | | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::A'
+// CHECK: | | `-CXXRecord 0x{{.+}} 'A'
+// CHECK: | `-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} Default 'const DefaultA &' cinit
+// CHECK: | |-ExprWithCleanups 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const DefaultA':'const P2718R0::DefaultA' lvalue
+// CHECK: | | `-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const DefaultA':'const P2718R0::DefaultA' lvalue
+// CHECK: | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const DefaultA':'const P2718R0::DefaultA' <NoOp>
+// CHECK: | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'DefaultA':'P2718R0::DefaultA' (CXXTemporary 0x{{.+}})
+// CHECK: | | `-CXXTemporaryObjectExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'DefaultA':'P2718R0::DefaultA' 'void ()'
+// CHECK: | `-typeDetails: LValueReferenceType 0x{{.+}} 'const DefaultA &'
+// CHECK: | `-qualTypeDetail: QualType 0x{{.+}} 'const DefaultA' const
+// CHECK: | `-typeDetails: ElaboratedType 0x{{.+}} 'DefaultA' sugar
+// CHECK: | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::DefaultA'
+// CHECK: | `-CXXRecord 0x{{.+}} 'DefaultA'
+// CHECK: |-FunctionDecl 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}> line:{{.*}}:{{.*}} test12 'void ()'
+// CHECK: | `-CompoundStmt 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | `-CXXForRangeStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | |-<<<NULL>>>
+// CHECK: | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} implicit used __range1 'int (&)[3]' cinit
+// CHECK: | | |-ExprWithCleanups 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int[3]' lvalue
+// CHECK: | | | `-CallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int[3]' lvalue
+// CHECK: | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int (&(*)(const P2718R0::A &))[3]' <FunctionToPointerDecay>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int (&(const P2718R0::A &))[3]' lvalue Function 0x{{.+}} 'default_arg_fn2' 'int (&(const P2718R0::A &))[3]' (FunctionTemplate 0x{{.+}} 'default_arg_fn2')
+// CHECK: | | | `-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const A':'const P2718R0::A' lvalue extended by Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const A':'const P2718R0::A' <NoOp>
+// CHECK: | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' (CXXTemporary 0x{{.+}})
+// CHECK: | | | `-CallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A'
+// CHECK: | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'A (*)(const P2718R0::A &, const DefaultA &)' <FunctionToPointerDecay>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'A (const P2718R0::A &, const DefaultA &)' lvalue Function 0x{{.+}} 'foo2' 'A (const P2718R0::A &, const DefaultA &)' (FunctionTemplate 0x{{.+}} 'foo2')
+// CHECK: | | | |-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const A':'const P2718R0::A' lvalue extended by Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const A':'const P2718R0::A' <NoOp>
+// CHECK: | | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' (CXXTemporary 0x{{.+}})
+// CHECK: | | | | `-CallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A'
+// CHECK: | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'A (*)(const P2718R0::A &, const DefaultA &)' <FunctionToPointerDecay>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'A (const P2718R0::A &, const DefaultA &)' lvalue Function 0x{{.+}} 'foo2' 'A (const P2718R0::A &, const DefaultA &)' (FunctionTemplate 0x{{.+}} 'foo2')
+// CHECK: | | | | |-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const A':'const P2718R0::A' lvalue extended by Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const A':'const P2718R0::A' <NoOp>
+// CHECK: | | | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' (CXXTemporary 0x{{.+}})
+// CHECK: | | | | | `-CallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A'
+// CHECK: | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'A (*)(const P2718R0::A &, const DefaultA &)' <FunctionToPointerDecay>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'A (const P2718R0::A &, const DefaultA &)' lvalue Function 0x{{.+}} 'foo2' 'A (const P2718R0::A &, const DefaultA &)' (FunctionTemplate 0x{{.+}} 'foo2')
+// CHECK: | | | | | |-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const A':'const P2718R0::A' lvalue extended by Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const A':'const P2718R0::A' <NoOp>
+// CHECK: | | | | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' (CXXTemporary 0x{{.+}})
+// CHECK: | | | | | | `-CXXTemporaryObjectExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' 'void ()'
+// CHECK: | | | | | `-CXXDefaultArgExpr 0x{{.+}} <<invalid sloc>> 'const DefaultA':'const P2718R0::DefaultA' lvalue has rewritten init
+// CHECK: | | | | | `-MaterializeTemporaryExpr 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'const DefaultA':'const P2718R0::DefaultA' lvalue extended by Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const DefaultA':'const P2718R0::DefaultA' <NoOp>
+// CHECK: | | | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'DefaultA':'P2718R0::DefaultA' (CXXTemporary 0x{{.+}})
+// CHECK: | | | | | `-CXXTemporaryObjectExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'DefaultA':'P2718R0::DefaultA' 'void ()'
+// CHECK: | | | | `-CXXDefaultArgExpr 0x{{.+}} <<invalid sloc>> 'const DefaultA':'const P2718R0::DefaultA' lvalue has rewritten init
+// CHECK: | | | | `-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const DefaultA':'const P2718R0::DefaultA' lvalue extended by Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const DefaultA':'const P2718R0::DefaultA' <NoOp>
+// CHECK: | | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'DefaultA':'P2718R0::DefaultA' (CXXTemporary 0x{{.+}})
+// CHECK: | | | | `-CXXTemporaryObjectExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'DefaultA':'P2718R0::DefaultA' 'void ()'
+// CHECK: | | | `-CXXDefaultArgExpr 0x{{.+}} <<invalid sloc>> 'const DefaultA':'const P2718R0::DefaultA' lvalue has rewritten init
+// CHECK: | | | `-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const DefaultA':'const P2718R0::DefaultA' lvalue extended by Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'const DefaultA':'const P2718R0::DefaultA' <NoOp>
+// CHECK: | | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'DefaultA':'P2718R0::DefaultA' (CXXTemporary 0x{{.+}})
+// CHECK: | | | `-CXXTemporaryObjectExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'DefaultA':'P2718R0::DefaultA' 'void ()'
+// CHECK: | | `-typeDetails: LValueReferenceType 0x{{.+}} 'int (&)[3]'
+// CHECK: | | `-typeDetails: ParenType 0x{{.+}} 'int[3]' sugar
+// CHECK: | | `-typeDetails: ConstantArrayType 0x{{.+}} 'int[3]' 3
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit used __begin1 'int *' cinit
+// CHECK: | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <ArrayToPointerDecay>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int[3]' lvalue Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | `-typeDetails: AutoType 0x{{.+}} 'int *' sugar
+// CHECK: | | `-typeDetails: DecayedType 0x{{.+}} 'int *' sugar
+// CHECK: | | |-typeDetails: ParenType 0x{{.+}} 'int[3]' sugar
+// CHECK: | | | `-typeDetails: ConstantArrayType 0x{{.+}} 'int[3]' 3
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | `-typeDetails: PointerType 0x{{.+}} 'int *'
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-DeclStmt 0x{{.+}} <col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} implicit used __end1 'int *' cinit
+// CHECK: | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int *' '+'
+// CHECK: | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <ArrayToPointerDecay>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int[3]' lvalue Var 0x{{.+}} '__range1' 'int (&)[3]'
+// CHECK: | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'long' 3
+// CHECK: | | `-typeDetails: AutoType 0x{{.+}} 'int *' sugar
+// CHECK: | | `-typeDetails: PointerType 0x{{.+}} 'int *'
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-BinaryOperator 0x{{.+}} <col:{{.*}}> 'bool' '!='
+// CHECK: | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__begin1' 'int *'
+// CHECK: | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__end1' 'int *'
+// CHECK: | |-UnaryOperator 0x{{.+}} <col:{{.*}}> 'int *' lvalue prefix '++'
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__begin1' 'int *'
+// CHECK: | |-DeclStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used e 'int' cinit
+// CHECK: | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | `-UnaryOperator 0x{{.+}} <col:{{.*}}> 'int' lvalue prefix '*' cannot overflow
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} '__begin1' 'int *'
+// CHECK: | | `-typeDetails: AutoType 0x{{.+}} 'int' sugar
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | `-CallExpr 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'void'
+// CHECK: | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'void (*)(int)' <FunctionToPointerDecay>
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'void (int)' lvalue Function 0x{{.+}} 'bar' 'void (int)'
+// CHECK: | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'e' 'int'
+// CHECK: `-FunctionDecl 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}> line:{{.*}}:{{.*}} test13 'void ()'
+// CHECK: `-CompoundStmt 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: `-CXXForRangeStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: |-<<<NULL>>>
+// CHECK: |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} implicit used __range1 'A &&' cinit
+// CHECK: | |-ExprWithCleanups 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' xvalue
+// CHECK: | | `-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' xvalue extended by Var 0x{{.+}} '__range1' 'A &&'
+// CHECK: | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' (CXXTemporary 0x{{.+}})
+// CHECK: | | `-CXXMemberCallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A'
+// CHECK: | | `-MemberExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> '<bound member function type>' .g 0x{{.+}}
+// CHECK: | | `-CXXMemberCallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' lvalue
+// CHECK: | | `-MemberExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> '<bound member function type>' .r 0x{{.+}}
+// CHECK: | | `-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' xvalue extended by Var 0x{{.+}} '__range1' 'A &&'
+// CHECK: | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' (CXXTemporary 0x{{.+}})
+// CHECK: | | `-CXXMemberCallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A'
+// CHECK: | | `-MemberExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> '<bound member function type>' .g 0x{{.+}}
+// CHECK: | | `-CXXMemberCallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' lvalue
+// CHECK: | | `-MemberExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> '<bound member function type>' .r 0x{{.+}}
+// CHECK: | | `-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' xvalue extended by Var 0x{{.+}} '__range1' 'A &&'
+// CHECK: | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' (CXXTemporary 0x{{.+}})
+// CHECK: | | `-CXXMemberCallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A'
+// CHECK: | | `-MemberExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> '<bound member function type>' .g 0x{{.+}}
+// CHECK: | | `-CXXMemberCallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'A':'P2718R0::A' lvalue
+// CHECK: | | `-MemberExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> '<bound member function type>' .r 0x{{.+}}
+// CHECK: | | `-MaterializeTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'P2718R0::A' xvalue extended by Var 0x{{.+}} '__range1' 'A &&'
+// CHECK: | | `-CXXBindTemporaryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'P2718R0::A' (CXXTemporary 0x{{.+}})
+// CHECK: | | `-CallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'P2718R0::A'
+// CHECK: | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'P2718R0::A (*)()' <FunctionToPointerDecay>
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'P2718R0::A ()' lvalue Function 0x{{.+}} 'dg' 'P2718R0::A ()' (FunctionTemplate 0x{{.+}} 'dg')
+// CHECK: | `-typeDetails: RValueReferenceType 0x{{.+}} 'A &&'
+// CHECK: | `-typeDetails: AutoType 0x{{.+}} 'A' sugar
+// CHECK: | `-typeDetails: ElaboratedType 0x{{.+}} 'A' sugar
+// CHECK: | `-typeDetails: RecordType 0x{{.+}} 'P2718R0::A'
+// CHECK: | `-CXXRecord 0x{{.+}} 'A'
+// CHECK: |-DeclStmt 0x{{.+}} <col:{{.*}}>
+// CHECK: | `-VarDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit used __begin1 'const int *' cinit
+// CHECK: | |-CXXMemberCallExpr 0x{{.+}} <col:{{.*}}> 'const int *'
+// CHECK: | | `-MemberExpr 0x{{.+}} <col:{{.*}}> '<bound member function type>' .begin 0x{{.+}}
+// CHECK: | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'const P2718R0::A' lvalue <NoOp>
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'A':'P2718R0::A' lvalue Var 0x{{.+}} '__range1' 'A &&'
+// CHECK: | `-typeDetails: AutoType 0x{{.+}} 'const int *' sugar
+// CHECK: | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: |-DeclStmt 0x{{.+}} <col:{{.*}}>
+// CHECK: | `-VarDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit used __end1 'const int *' cinit
+// CHECK: | |-CXXMemberCallExpr 0x{{.+}} <col:{{.*}}> 'const int *'
+// CHECK: | | `-MemberExpr 0x{{.+}} <col:{{.*}}> '<bound member function type>' .end 0x{{.+}}
+// CHECK: | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'const P2718R0::A' lvalue <NoOp>
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'A':'P2718R0::A' lvalue Var 0x{{.+}} '__range1' 'A &&'
+// CHECK: | `-typeDetails: AutoType 0x{{.+}} 'const int *' sugar
+// CHECK: | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: |-BinaryOperator 0x{{.+}} <col:{{.*}}> 'bool' '!='
+// CHECK: | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'const int *' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const int *' lvalue Var 0x{{.+}} '__begin1' 'const int *'
+// CHECK: | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'const int *' <LValueToRValue>
+// CHECK: | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const int *' lvalue Var 0x{{.+}} '__end1' 'const int *'
+// CHECK: |-UnaryOperator 0x{{.+}} <col:{{.*}}> 'const int *' lvalue prefix '++'
+// CHECK: | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const int *' lvalue Var 0x{{.+}} '__begin1' 'const int *'
+// CHECK: |-DeclStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used e 'int' cinit
+// CHECK: | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | `-UnaryOperator 0x{{.+}} <col:{{.*}}> 'const int' lvalue prefix '*' cannot overflow
+// CHECK: | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'const int *' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const int *' lvalue Var 0x{{.+}} '__begin1' 'const int *'
+// CHECK: | `-typeDetails: AutoType 0x{{.+}} 'int' sugar
+// CHECK: | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: `-CallExpr 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'void'
+// CHECK: |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'void (*)(int)' <FunctionToPointerDecay>
+// CHECK: | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'void (int)' lvalue Function 0x{{.+}} 'bar' 'void (int)'
+// CHECK: `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'e' 'int'
\ No newline at end of file
diff --git a/clang/test/AST/ast-dump-fpfeatures.cpp b/clang/test/AST/ast-dump-fpfeatures.cpp
index cd00650db55cc..50cd5342df230 100644
--- a/clang/test/AST/ast-dump-fpfeatures.cpp
+++ b/clang/test/AST/ast-dump-fpfeatures.cpp
@@ -25,16 +25,16 @@ float func_03(float x) {
// CHECK: FunctionDecl {{.*}} func_02 'float (float)'
// CHECK-NEXT: TemplateArgument type 'float'
// CHECK-NEXT: BuiltinType {{.*}} 'float'
-// CHECK-NEXT: ParmVarDecl {{.*}} x 'float'
-// CHECK-NEXT: CompoundStmt
-// CHECK-NEXT: ReturnStmt
-// CHECK-NEXT: CallExpr {{.*}} FPContractMode=1
+// CHECK: ParmVarDecl {{.*}} x 'float'
+// CHECK: CompoundStmt
+// CHECK: ReturnStmt
+// CHECK: CallExpr {{.*}} FPContractMode=1
// CHECK: FunctionDecl {{.*}} func_03 'float (float)'
// CHECK-NEXT: ParmVarDecl {{.*}} x 'float'
-// CHECK-NEXT: CompoundStmt
-// CHECK-NEXT: ReturnStmt
-// CHECK-NEXT: CallExpr {{.*}} FPContractMode=0
+// CHECK: CompoundStmt
+// CHECK: ReturnStmt
+// CHECK: CallExpr {{.*}} FPContractMode=0
int func_04(float x) {
#pragma STDC FP_CONTRACT ON
@@ -43,9 +43,9 @@ int func_04(float x) {
// CHECK: FunctionDecl {{.*}} func_04 'int (float)'
// CHECK-NEXT: ParmVarDecl {{.*}} x 'float'
-// CHECK-NEXT: CompoundStmt
-// CHECK-NEXT: ReturnStmt
-// CHECK-NEXT: ImplicitCastExpr {{.*}} 'int' <FloatingToIntegral> FPContractMode=1
+// CHECK: CompoundStmt
+// CHECK: ReturnStmt
+// CHECK: ImplicitCastExpr {{.*}} 'int' <FloatingToIntegral> FPContractMode=1
float func_05(double x) {
#pragma STDC FP_CONTRACT ON
@@ -54,9 +54,9 @@ float func_05(double x) {
// CHECK: FunctionDecl {{.*}} func_05 'float (double)'
// CHECK-NEXT: ParmVarDecl {{.*}} x 'double'
-// CHECK-NEXT: CompoundStmt
-// CHECK-NEXT: ReturnStmt
-// CHECK-NEXT: CStyleCastExpr {{.*}} FPContractMode=1
+// CHECK: CompoundStmt
+// CHECK: ReturnStmt
+// CHECK: CStyleCastExpr {{.*}} FPContractMode=1
float func_06(double x) {
#pragma STDC FP_CONTRACT ON
@@ -65,9 +65,9 @@ float func_06(double x) {
// CHECK: FunctionDecl {{.*}} func_06 'float (double)'
// CHECK-NEXT: ParmVarDecl {{.*}} x 'double'
-// CHECK-NEXT: CompoundStmt
-// CHECK-NEXT: ReturnStmt
-// CHECK-NEXT: CXXFunctionalCastExpr {{.*}} FPContractMode=1
+// CHECK: CompoundStmt
+// CHECK: ReturnStmt
+// CHECK: CXXFunctionalCastExpr {{.*}} FPContractMode=1
float func_07(double x) {
#pragma STDC FP_CONTRACT ON
@@ -76,9 +76,9 @@ float func_07(double x) {
// CHECK: FunctionDecl {{.*}} func_07 'float (double)'
// CHECK-NEXT: ParmVarDecl {{.*}} x 'double'
-// CHECK-NEXT: CompoundStmt
-// CHECK-NEXT: ReturnStmt
-// CHECK-NEXT: CXXStaticCastExpr {{.*}} FPContractMode=1
+// CHECK: CompoundStmt
+// CHECK: ReturnStmt
+// CHECK: CXXStaticCastExpr {{.*}} FPContractMode=1
#pragma STDC FENV_ROUND FE_DOWNWARD
diff --git a/clang/test/AST/ast-dump-funcs-json.cpp b/clang/test/AST/ast-dump-funcs-json.cpp
index 957df5cea6ec5..5c1d9e3bddd85 100644
--- a/clang/test/AST/ast-dump-funcs-json.cpp
+++ b/clang/test/AST/ast-dump-funcs-json.cpp
@@ -1,1415 +1,1568 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -ast-dump=json -ast-dump-filter Test %s | FileCheck %s
-
-struct S {
- void Test1();
- void Test2() const;
- void Test3() volatile;
- void Test4() &;
- void Test5() &&;
- virtual void Test6(float, int = 12);
- virtual void Test7() = 0;
-};
-
-struct T : S { // T is not referenced, but S is
- void Test6(float, int = 100) override;
-};
-
-struct U {
- void Test1();
-};
-void U::Test1() {} // parent
-
-void Test1();
-void Test2(void);
-void Test3(int a, int b);
-void Test4(int a, int b = 12);
-constexpr void Test5(void);
-static void Test6(void);
-extern void Test7(void);
-inline void Test8(void);
-void Test9(void) noexcept;
-void Test10(void) noexcept(false);
-void Test11(void) noexcept(1);
-
-template <typename T>
-T Test12(T&);
-
-void Test13(int) {}
-void Test14(int, ...) {}
-
-int main() {
- Test1(); // Causes this to be marked 'used'
-}
-
-template <typename ...Ts>
-struct TestFriends {
- friend Ts...;
-};
-
-// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 124,
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 4,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 119,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 130,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Test1",
-// CHECK-NEXT: "mangledName": "_ZN1S5Test1Ev",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 140,
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 5,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 135,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 148,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Test2",
-// CHECK-NEXT: "mangledName": "_ZNK1S5Test2Ev",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void () const"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 162,
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 6,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 157,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 170,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Test3",
-// CHECK-NEXT: "mangledName": "_ZNV1S5Test3Ev",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void () volatile"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 187,
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 7,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 182,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 195,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Test4",
-// CHECK-NEXT: "mangledName": "_ZNR1S5Test4Ev",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void () &"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 205,
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 8,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 200,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 213,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Test5",
-// CHECK-NEXT: "mangledName": "_ZNO1S5Test5Ev",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void () &&"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 232,
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 9,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 219,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 7
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 253,
-// CHECK-NEXT: "col": 37,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Test6",
-// CHECK-NEXT: "mangledName": "_ZN1S5Test6Efi",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (float, int)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "virtual": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 243,
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 238,
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 238,
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 249,
-// CHECK-NEXT: "col": 33,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 245,
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 251,
-// CHECK-NEXT: "col": 35,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 251,
-// CHECK-NEXT: "col": 35,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 251,
-// CHECK-NEXT: "col": 35,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "12"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 271,
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 10,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 258,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 7
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 281,
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Test7",
-// CHECK-NEXT: "mangledName": "_ZN1S5Test7Ev",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "virtual": true,
-// CHECK-NEXT: "pure": true
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 343,
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 14,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 338,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 367,
-// CHECK-NEXT: "col": 32,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Test6",
-// CHECK-NEXT: "mangledName": "_ZN1T5Test6Efi",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (float, int)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 354,
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 349,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 349,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 360,
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 356,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 362,
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 362,
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 362,
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "100"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OverrideAttr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 367,
-// CHECK-NEXT: "col": 32,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 367,
-// CHECK-NEXT: "col": 32,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 399,
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 18,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 394,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 405,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Test1",
-// CHECK-NEXT: "mangledName": "_ZN1U5Test1Ev",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 419,
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 20,
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 411,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 428,
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "parentDeclContextId": "0x{{.*}}",
-// CHECK-NEXT: "previousDecl": "0x{{.*}}",
-// CHECK-NEXT: "name": "Test1",
-// CHECK-NEXT: "mangledName": "_ZN1U5Test1Ev",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 427,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 428,
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 446,
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 22,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 441,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 452,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "Test1",
-// CHECK-NEXT: "mangledName": "_Z5Test1v",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 460,
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 23,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 455,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 470,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Test2",
-// CHECK-NEXT: "mangledName": "_Z5Test2v",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 478,
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 24,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 473,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 496,
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Test3",
-// CHECK-NEXT: "mangledName": "_Z5Test3ii",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (int, int)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 488,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 484,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 488,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 495,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 491,
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 495,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 504,
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 25,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 499,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 527,
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Test4",
-// CHECK-NEXT: "mangledName": "_Z5Test4ii",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (int, int)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 514,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 510,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 514,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 521,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 517,
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 525,
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 525,
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 525,
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "12"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 545,
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 26,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 530,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 9
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 555,
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Test5",
-// CHECK-NEXT: "mangledName": "_Z5Test5v",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "constexpr": true
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 570,
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 27,
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 558,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 580,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Test6",
-// CHECK-NEXT: "mangledName": "_ZL5Test6v",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "storageClass": "static"
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 595,
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 28,
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 583,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 605,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Test7",
-// CHECK-NEXT: "mangledName": "_Z5Test7v",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "storageClass": "extern"
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 620,
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 29,
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 608,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 630,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Test8",
-// CHECK-NEXT: "mangledName": "_Z5Test8v",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 638,
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 30,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 633,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 650,
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Test9",
-// CHECK-NEXT: "mangledName": "_Z5Test9v",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void () noexcept"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 665,
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 31,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 660,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 692,
-// CHECK-NEXT: "col": 33,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Test10",
-// CHECK-NEXT: "mangledName": "_Z6Test10v",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void () noexcept(false)"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 700,
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 32,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 695,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 723,
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Test11",
-// CHECK-NEXT: "mangledName": "_Z6Test11v",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void () noexcept(1)"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 751,
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 35,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 727,
-// CHECK-NEXT: "line": 34,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 760,
-// CHECK-NEXT: "line": 35,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Test12",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 746,
-// CHECK-NEXT: "line": 34,
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 737,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 746,
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "T",
-// CHECK-NEXT: "tagUsed": "typename",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 751,
-// CHECK-NEXT: "line": 35,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 749,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 760,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Test12",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "T (T &)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 760,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 758,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 759,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "T &"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 769,
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 37,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 764,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 782,
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Test13",
-// CHECK-NEXT: "mangledName": "_Z6Test13i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (int)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 779,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 776,
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 776,
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 781,
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 782,
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 789,
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 38,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 784,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 807,
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Test14",
-// CHECK-NEXT: "mangledName": "_Z6Test14iz",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (int, ...)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "variadic": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 799,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 796,
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 796,
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 806,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 807,
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "ClassTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 905,
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 45,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 11
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 872,
-// CHECK-NEXT: "line": 44,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 937,
-// CHECK-NEXT: "line": 47,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestFriends",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 894,
-// CHECK-NEXT: "line": 44,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 882,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 894,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "Ts",
-// CHECK-NEXT: "tagUsed": "typename",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0,
-// CHECK-NEXT: "isParameterPack": true
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 905,
-// CHECK-NEXT: "line": 45,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 11
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 898,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 937,
-// CHECK-NEXT: "line": 47,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestFriends",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 905,
-// CHECK-NEXT: "line": 45,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 11
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 898,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 905,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 11
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "TestFriends",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FriendDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 930,
-// CHECK-NEXT: "line": 46,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 923,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 932,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Ts"
-// CHECK-NEXT: },
-// CHECK-NEXT: "isPackExpansion": true
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
+// RUN: %clang_cc1 -triple x86_64-unknown-unknown -ast-dump=json -ast-dump-filter Test %s | FileCheck %s
+
+struct S {
+ void Test1();
+ void Test2() const;
+ void Test3() volatile;
+ void Test4() &;
+ void Test5() &&;
+ virtual void Test6(float, int = 12);
+ virtual void Test7() = 0;
+};
+
+struct T : S { // T is not referenced, but S is
+ void Test6(float, int = 100) override;
+};
+
+struct U {
+ void Test1();
+};
+void U::Test1() {} // parent
+
+void Test1();
+void Test2(void);
+void Test3(int a, int b);
+void Test4(int a, int b = 12);
+constexpr void Test5(void);
+static void Test6(void);
+extern void Test7(void);
+inline void Test8(void);
+void Test9(void) noexcept;
+void Test10(void) noexcept(false);
+void Test11(void) noexcept(1);
+
+template <typename T>
+T Test12(T&);
+
+void Test13(int) {}
+void Test14(int, ...) {}
+
+int main() {
+ Test1(); // Causes this to be marked 'used'
+}
+
+template <typename ...Ts>
+struct TestFriends {
+ friend Ts...;
+};
+
+// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 127,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 4,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 122,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 133,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Test1",
+// CHECK-NEXT: "mangledName": "_ZN1S5Test1Ev",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 144,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 5,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 139,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 152,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Test2",
+// CHECK-NEXT: "mangledName": "_ZNK1S5Test2Ev",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void () const"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 167,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 6,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 162,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 175,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Test3",
+// CHECK-NEXT: "mangledName": "_ZNV1S5Test3Ev",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void () volatile"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 193,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 7,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 188,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 201,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Test4",
+// CHECK-NEXT: "mangledName": "_ZNR1S5Test4Ev",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void () &"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 212,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 8,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 207,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 220,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Test5",
+// CHECK-NEXT: "mangledName": "_ZNO1S5Test5Ev",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void () &&"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 240,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 9,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 227,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 7
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 261,
+// CHECK-NEXT: "col": 37,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Test6",
+// CHECK-NEXT: "mangledName": "_ZN1S5Test6Efi",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (float, int)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "virtual": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 251,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 246,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 246,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "float"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "float"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "fpp"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 257,
+// CHECK-NEXT: "col": 33,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 253,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 259,
+// CHECK-NEXT: "col": 35,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 259,
+// CHECK-NEXT: "col": 35,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 259,
+// CHECK-NEXT: "col": 35,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "12"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 280,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 10,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 267,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 7
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 290,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Test7",
+// CHECK-NEXT: "mangledName": "_ZN1S5Test7Ev",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "virtual": true,
+// CHECK-NEXT: "pure": true
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 356,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 14,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 351,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 380,
+// CHECK-NEXT: "col": 32,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Test6",
+// CHECK-NEXT: "mangledName": "_ZN1T5Test6Efi",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (float, int)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 367,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 362,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 362,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "float"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "float"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "fpp"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 373,
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 369,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 375,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 375,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 375,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "100"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OverrideAttr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 380,
+// CHECK-NEXT: "col": 32,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 380,
+// CHECK-NEXT: "col": 32,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 416,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 18,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 411,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 422,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Test1",
+// CHECK-NEXT: "mangledName": "_ZN1U5Test1Ev",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 438,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 20,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 430,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 447,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "parentDeclContextId": "0x{{.*}}",
+// CHECK-NEXT: "previousDecl": "0x{{.*}}",
+// CHECK-NEXT: "name": "Test1",
+// CHECK-NEXT: "mangledName": "_ZN1U5Test1Ev",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 446,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 447,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 467,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 22,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 462,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 473,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "Test1",
+// CHECK-NEXT: "mangledName": "_Z5Test1v",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 482,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 23,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 477,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 492,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Test2",
+// CHECK-NEXT: "mangledName": "_Z5Test2v",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 501,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 24,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 496,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 519,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Test3",
+// CHECK-NEXT: "mangledName": "_Z5Test3ii",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (int, int)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 511,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 507,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 511,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 518,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 514,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 518,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 528,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 25,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 523,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 551,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Test4",
+// CHECK-NEXT: "mangledName": "_Z5Test4ii",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (int, int)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 538,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 534,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 538,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 545,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 541,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 549,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 549,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 549,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "12"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 570,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 26,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 555,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 9
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 580,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Test5",
+// CHECK-NEXT: "mangledName": "_Z5Test5v",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "constexpr": true
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 596,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 27,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 584,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 606,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Test6",
+// CHECK-NEXT: "mangledName": "_ZL5Test6v",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "storageClass": "static"
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 622,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 28,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 610,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 632,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Test7",
+// CHECK-NEXT: "mangledName": "_Z5Test7v",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "storageClass": "extern"
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 648,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 29,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 636,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 658,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Test8",
+// CHECK-NEXT: "mangledName": "_Z5Test8v",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 667,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 30,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 662,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 679,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Test9",
+// CHECK-NEXT: "mangledName": "_Z5Test9v",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void () noexcept"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 695,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 31,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 690,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 722,
+// CHECK-NEXT: "col": 33,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Test10",
+// CHECK-NEXT: "mangledName": "_Z6Test10v",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void () noexcept(false)"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 731,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 32,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 726,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 754,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Test11",
+// CHECK-NEXT: "mangledName": "_Z6Test11v",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void () noexcept(1)"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionTemplateDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 785,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 35,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 760,
+// CHECK-NEXT: "line": 34,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 794,
+// CHECK-NEXT: "line": 35,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Test12",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 779,
+// CHECK-NEXT: "line": 34,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 770,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 779,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "T",
+// CHECK-NEXT: "tagUsed": "typename",
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 785,
+// CHECK-NEXT: "line": 35,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 783,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 794,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Test12",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "T (T &)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 794,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 792,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 793,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "T &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "LValueReferenceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "T &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isDependent": true,
+// CHECK-NEXT: "isInstantiationDependent": true,
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "T"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isDependent": true,
+// CHECK-NEXT: "isInstantiationDependent": true,
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0,
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "name": "T"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 805,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 37,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 800,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 818,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Test13",
+// CHECK-NEXT: "mangledName": "_Z6Test13i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (int)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 815,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 812,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 812,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 817,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 818,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 826,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 38,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 821,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 844,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Test14",
+// CHECK-NEXT: "mangledName": "_Z6Test14iz",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (int, ...)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "variadic": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 836,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 833,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 833,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 843,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 844,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "ClassTemplateDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 949,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 45,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 11
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 915,
+// CHECK-NEXT: "line": 44,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 983,
+// CHECK-NEXT: "line": 47,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestFriends",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 937,
+// CHECK-NEXT: "line": 44,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 925,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 937,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "Ts",
+// CHECK-NEXT: "tagUsed": "typename",
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0,
+// CHECK-NEXT: "isParameterPack": true
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 949,
+// CHECK-NEXT: "line": 45,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 11
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 942,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 983,
+// CHECK-NEXT: "line": 47,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestFriends",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true,
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "isConstexpr": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 949,
+// CHECK-NEXT: "line": 45,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 11
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 942,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 949,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 11
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "TestFriends",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FriendDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 975,
+// CHECK-NEXT: "line": 46,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 968,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 977,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Ts"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isPackExpansion": true
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
diff --git a/clang/test/AST/ast-dump-funcs.cpp b/clang/test/AST/ast-dump-funcs.cpp
index 61fb5d4eb654e..9d9856bbef35f 100644
--- a/clang/test/AST/ast-dump-funcs.cpp
+++ b/clang/test/AST/ast-dump-funcs.cpp
@@ -48,8 +48,8 @@ struct S {
virtual void f(float, int = 12);
// CHECK: CXXMethodDecl 0x{{[^ ]*}} <line:[[@LINE-1]]:3, col:33> col:16 f 'void (float, int)' virtual
// CHECK-NEXT: ParmVarDecl 0x{{[^ ]*}} <col:18> col:23 'float'
- // CHECK-NEXT: ParmVarDecl 0x{{[^ ]*}} <col:25, col:31> col:29 'int' cinit
- // CHECK-NEXT: IntegerLiteral 0x{{[^ ]*}} <col:31> 'int' 12
+ // CHECK: ParmVarDecl 0x{{[^ ]*}} <col:25, col:31> col:29 'int' cinit
+ // CHECK: IntegerLiteral 0x{{[^ ]*}} <col:31> 'int' 12
virtual void g() = 0;
// CHECK: CXXMethodDecl 0x{{[^ ]*}} <line:[[@LINE-1]]:3, col:22> col:16 g 'void ()' virtual pure
@@ -66,9 +66,9 @@ struct T : S { // T is not referenced, but S is
// CHECK: CXXMethodDecl 0x{{[^ ]*}} <line:[[@LINE-1]]:3, col:28> col:8 f 'void (float, int)'
// CHECK-NEXT: Overrides: [ 0x{{[^ ]*}} S::f 'void (float, int)' ]
// CHECK-NEXT: ParmVarDecl 0x{{[^ ]*}} <col:10> col:15 'float'
- // CHECK-NEXT: ParmVarDecl 0x{{[^ ]*}} <col:17, col:23> col:21 'int' cinit
- // CHECK-NEXT: IntegerLiteral 0x{{[^ ]*}} <col:23> 'int' 100
- // CHECK-NEXT: OverrideAttr
+ // CHECK: ParmVarDecl 0x{{[^ ]*}} <col:17, col:23> col:21 'int' cinit
+ // CHECK: IntegerLiteral 0x{{[^ ]*}} <col:23> 'int' 100
+ // CHECK: OverrideAttr
// CHECK: CXXConstructorDecl 0x{{[^ ]*}} <line:[[@LINE-9]]:8> col:8 implicit T 'void (const T &)' inline default_delete noexcept-unevaluated
// CHECK: CXXMethodDecl 0x{{[^ ]*}} <col:8> col:8 implicit operator= 'T &(const T &)' inline default_delete noexcept-unevaluated
@@ -91,12 +91,12 @@ void a2(void);
void b(int a, int b);
// CHECK: FunctionDecl 0x{{[^ ]*}} <line:[[@LINE-1]]:1, col:20> col:6 b 'void (int, int)'
// CHECK-NEXT: ParmVarDecl 0x{{[^ ]*}} <col:8, col:12> col:12 a 'int'
-// CHECK-NEXT: ParmVarDecl 0x{{[^ ]*}} <col:15, col:19> col:19 b 'int'
+// CHECK: ParmVarDecl 0x{{[^ ]*}} <col:15, col:19> col:19 b 'int'
void c(int a, int b = 12);
// CHECK: FunctionDecl 0x{{[^ ]*}} <line:[[@LINE-1]]:1, col:25> col:6 c 'void (int, int)'
// CHECK-NEXT: ParmVarDecl 0x{{[^ ]*}} <col:8, col:12> col:12 a 'int'
-// CHECK-NEXT: ParmVarDecl 0x{{[^ ]*}} <col:15, col:23> col:19 b 'int' cinit
-// CHECK-NEXT: IntegerLiteral 0x{{[^ ]*}} <col:23> 'int' 12
+// CHECK: ParmVarDecl 0x{{[^ ]*}} <col:15, col:23> col:19 b 'int' cinit
+// CHECK: IntegerLiteral 0x{{[^ ]*}} <col:23> 'int' 12
constexpr void d(void);
// CHECK: FunctionDecl 0x{{[^ ]*}} <line:[[@LINE-1]]:1, col:22> col:16 constexpr d 'void ()'
static void e(void);
@@ -124,12 +124,12 @@ T l(T&);
void m(int) {}
// CHECK: FunctionDecl 0x{{[^ ]*}} <line:[[@LINE-1]]:1, col:14> col:6 m 'void (int)'
// CHECK-NEXT: ParmVarDecl 0x{{[^ ]*}} <col:8> col:11 'int'
-// CHECK-NEXT: CompoundStmt 0x{{[^ ]*}} <col:13, col:14>
+// CHECK: CompoundStmt 0x{{[^ ]*}} <col:13, col:14>
void n(int, ...) {}
// CHECK: FunctionDecl 0x{{[^ ]*}} <line:[[@LINE-1]]:1, col:19> col:6 n 'void (int, ...)'
// CHECK-NEXT: ParmVarDecl 0x{{[^ ]*}} <col:8> col:11 'int'
-// CHECK-NEXT: CompoundStmt 0x{{[^ ]*}} <col:18, col:19>
+// CHECK: CompoundStmt 0x{{[^ ]*}} <col:18, col:19>
int main() {
// CHECK: FunctionDecl 0x{{[^ ]*}} <line:[[@LINE-1]]:1, line:[[@LINE+2]]:1> line:[[@LINE-1]]:5 main 'int ()'
diff --git a/clang/test/AST/ast-dump-functionprototype.cpp b/clang/test/AST/ast-dump-functionprototype.cpp
index d831e5da2d320..a723ecfb3b1af 100644
--- a/clang/test/AST/ast-dump-functionprototype.cpp
+++ b/clang/test/AST/ast-dump-functionprototype.cpp
@@ -6,17 +6,17 @@ struct B {};
typedef void (type1)() noexcept(10 > 5);
// CHECK: TypedefDecl {{.*}} type1 'void () noexcept(10 > 5)'
-// CHECK-NEXT: `-ParenType {{.*}}
-// CHECK-NEXT: `-FunctionProtoType {{.*}} 'void () noexcept(10 > 5)' exceptionspec_noexcept_true cdecl
+// CHECK-NEXT: `-typeDetails: ParenType {{.*}}
+// CHECK-NEXT: `-typeDetails: FunctionProtoType {{.*}} 'void () noexcept(10 > 5)' exceptionspec_noexcept_true cdecl
// CHECK-NEXT: |-NoexceptExpr: ConstantExpr {{.*}} 'bool'
// CHECK-NEXT: | `-value: Int 1
-// CHECK-NEXT: `-BuiltinType {{.*}} 'void'
+// CHECK: `-functionDetails: cdeclReturnType {{.*}} 'void'
typedef void (type2)() throw(A, B);
// CHECK: TypedefDecl {{.*}} type2 'void () throw(A, B)'
-// CHECK-NEXT: `-ParenType {{.*}}
-// CHECK-NEXT: `-FunctionProtoType {{.*}} 'void () throw(A, B)' exceptionspec_dynamic cdecl
+// CHECK-NEXT: `-typeDetails: ParenType {{.*}}
+// CHECK-NEXT: `-typeDetails: FunctionProtoType {{.*}} 'void () throw(A, B)' exceptionspec_dynamic cdecl
// CHECK-NEXT: |-Exceptions: 'A', 'B'
-// CHECK-NEXT: `-BuiltinType {{.*}} 'void'
+// CHECK: `-functionDetails: cdeclReturnType {{.*}} 'void'
diff --git a/clang/test/AST/ast-dump-if-json.cpp b/clang/test/AST/ast-dump-if-json.cpp
index fe8fc88cdb751..eb62317350fe1 100644
--- a/clang/test/AST/ast-dump-if-json.cpp
+++ b/clang/test/AST/ast-dump-if-json.cpp
@@ -1,1202 +1,1266 @@
-// RUN: %clang_cc1 -triple x86_64-pc-linux -std=c++23 -ast-dump=json %s | FileCheck %s
-
-void func(int val) {
- if (val)
- ;
-
- if (val)
- ;
- else
- ;
-
- if (val)
- ;
- else if (val)
- ;
- else
- ;
-
- if constexpr(10 == 10)
- ;
-
- if (int i = 12)
- ;
-
- if (int i = 12; i)
- ;
-
- if consteval {}
-
- if consteval {} else {}
-
- if not consteval {}
-
- if not consteval {} else {}
-}
-
-// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
-// using --filters=IfStmt
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "IfStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 4,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 5,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 4,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralToBoolean",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "val",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NullStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 5,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "IfStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 7,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 10,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasElse": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 7,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralToBoolean",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "val",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NullStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 8,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NullStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 10,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "IfStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 12,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 17,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasElse": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 12,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralToBoolean",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "val",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NullStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 13,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IfStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 14,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 17,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasElse": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 14,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralToBoolean",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "val",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NullStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 15,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NullStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 17,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "IfStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 19,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 20,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ConstantExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 19,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "true",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "==",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "10"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "10"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NullStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 20,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "IfStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 22,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 23,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasVar": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 22,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "12"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralToBoolean",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NullStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 23,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "IfStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 25,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 26,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasInit": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 25,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "12"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralToBoolean",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NullStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 26,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "IfStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 28,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isConsteval": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "IfStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 30,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasElse": true,
-// CHECK-NEXT: "isConsteval": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "IfStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 32,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isConsteval": true,
-// CHECK-NEXT: "constevalIsNegated": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "IfStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 34,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasElse": true,
-// CHECK-NEXT: "isConsteval": true,
-// CHECK-NEXT: "constevalIsNegated": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 28,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
+// RUN: %clang_cc1 -triple x86_64-pc-linux -std=c++23 -ast-dump=json %s | FileCheck %s
+
+void func(int val) {
+ if (val)
+ ;
+
+ if (val)
+ ;
+ else
+ ;
+
+ if (val)
+ ;
+ else if (val)
+ ;
+ else
+ ;
+
+ if constexpr(10 == 10)
+ ;
+
+ if (int i = 12)
+ ;
+
+ if (int i = 12; i)
+ ;
+
+ if consteval {}
+
+ if consteval {} else {}
+
+ if not consteval {}
+
+ if not consteval {} else {}
+}
+
+// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
+// using --filters=IfStmt
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "IfStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 114,
+// CHECK-NEXT: "line": 4,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 128,
+// CHECK-NEXT: "line": 5,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 118,
+// CHECK-NEXT: "line": 4,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 118,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralToBoolean",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 118,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 118,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 118,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 118,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "val",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NullStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 128,
+// CHECK-NEXT: "line": 5,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 128,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "IfStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 135,
+// CHECK-NEXT: "line": 7,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 164,
+// CHECK-NEXT: "line": 10,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasElse": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 139,
+// CHECK-NEXT: "line": 7,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 139,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralToBoolean",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 139,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 139,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 139,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 139,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "val",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NullStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 149,
+// CHECK-NEXT: "line": 8,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 149,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NullStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 164,
+// CHECK-NEXT: "line": 10,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 164,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "IfStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 171,
+// CHECK-NEXT: "line": 12,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 224,
+// CHECK-NEXT: "line": 17,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasElse": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 175,
+// CHECK-NEXT: "line": 12,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 175,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralToBoolean",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 175,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 175,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 175,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 175,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "val",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NullStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 185,
+// CHECK-NEXT: "line": 13,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 185,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IfStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 195,
+// CHECK-NEXT: "line": 14,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 224,
+// CHECK-NEXT: "line": 17,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasElse": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 199,
+// CHECK-NEXT: "line": 14,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 199,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralToBoolean",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 199,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 199,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 199,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 199,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "val",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NullStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 209,
+// CHECK-NEXT: "line": 15,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 209,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NullStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 224,
+// CHECK-NEXT: "line": 17,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 224,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "IfStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 231,
+// CHECK-NEXT: "line": 19,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 259,
+// CHECK-NEXT: "line": 20,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isConstexpr": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ConstantExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 244,
+// CHECK-NEXT: "line": 19,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 250,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "true",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 244,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 250,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "==",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 244,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 244,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "10"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 250,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 250,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "10"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NullStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 259,
+// CHECK-NEXT: "line": 20,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 259,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "IfStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 266,
+// CHECK-NEXT: "line": 22,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 287,
+// CHECK-NEXT: "line": 23,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasVar": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 270,
+// CHECK-NEXT: "line": 22,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 278,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 274,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 270,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 278,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 278,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 278,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "12"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 274,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 274,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralToBoolean",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 274,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 274,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 274,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 274,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NullStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 287,
+// CHECK-NEXT: "line": 23,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 287,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "IfStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 294,
+// CHECK-NEXT: "line": 25,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 318,
+// CHECK-NEXT: "line": 26,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasInit": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 298,
+// CHECK-NEXT: "line": 25,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 308,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 302,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 298,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 306,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 306,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 306,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "12"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 310,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 310,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralToBoolean",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 310,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 310,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 310,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 310,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NullStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 318,
+// CHECK-NEXT: "line": 26,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 318,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "IfStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 325,
+// CHECK-NEXT: "line": 28,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 339,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isConsteval": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 338,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 339,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "IfStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 346,
+// CHECK-NEXT: "line": 30,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 368,
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasElse": true,
+// CHECK-NEXT: "isConsteval": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 359,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 360,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 367,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 368,
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "IfStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 375,
+// CHECK-NEXT: "line": 32,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 393,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isConsteval": true,
+// CHECK-NEXT: "constevalIsNegated": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 392,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 393,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "IfStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 400,
+// CHECK-NEXT: "line": 34,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 426,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasElse": true,
+// CHECK-NEXT: "isConsteval": true,
+// CHECK-NEXT: "constevalIsNegated": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 417,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 418,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 425,
+// CHECK-NEXT: "col": 28,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 426,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
diff --git a/clang/test/AST/ast-dump-invalid.cpp b/clang/test/AST/ast-dump-invalid.cpp
index 5b6d74194b989..ce931ca21c3d3 100644
--- a/clang/test/AST/ast-dump-invalid.cpp
+++ b/clang/test/AST/ast-dump-invalid.cpp
@@ -12,8 +12,8 @@ void f(T i, T j) {
// CHECK-NEXT: |-TemplateTypeParmDecl
// CHECK-NEXT: `-FunctionDecl
// CHECK-NEXT: |-ParmVarDecl
-// CHECK-NEXT: |-ParmVarDecl
-// CHECK-NEXT: `-CompoundStmt
+// CHECK: |-ParmVarDecl
+// CHECK: `-CompoundStmt
// CHECK-NEXT: `-ReturnStmt
// CHECK-NEXT: `-CXXUnresolvedConstructExpr {{.*}} <col:10, col:16> 'T'
// CHECK-NEXT: |-DeclRefExpr {{.*}} <col:13> 'T' lvalue ParmVar {{.*}} 'i' 'T'
@@ -31,7 +31,7 @@ int g(int i) {
// CHECK: NamespaceDecl {{.*}} <{{.*}}> {{.*}} TestInvalidIf
// CHECK-NEXT: `-FunctionDecl
// CHECK-NEXT: |-ParmVarDecl
-// CHECK-NEXT: `-CompoundStmt
+// CHECK: `-CompoundStmt
// CHECK-NEXT: `-IfStmt {{.*}} <line:25:3, line:28:12>
// CHECK-NEXT: |-RecoveryExpr {{.*}} <line:25:7> 'bool'
// CHECK-NEXT: |-ReturnStmt {{.*}} <line:26:5, col:12>
@@ -52,11 +52,11 @@ double Str::foo1(double, invalid_type)
// CHECK: | |-CXXRecordDecl {{.*}} <col:1, col:8> col:8 implicit struct Str
// CHECK-NEXT: | `-CXXMethodDecl {{.*}} <line:45:4, col:36> col:11 invalid foo1 'double (double, int)'
// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:16> col:22 'double'
-// CHECK-NEXT: | `-ParmVarDecl {{.*}} <col:24, <invalid sloc>> col:36 invalid 'int'
-// CHECK-NEXT: `-CXXMethodDecl {{.*}} parent {{.*}} <line:47:1, line:48:14> line:47:13 invalid foo1 'double (double, int)'
+// CHECK: | `-ParmVarDecl {{.*}} <col:24, <invalid sloc>> col:36 invalid 'int'
+// CHECK: `-CXXMethodDecl {{.*}} parent {{.*}} <line:47:1, line:48:14> line:47:13 invalid foo1 'double (double, int)'
// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:18> col:24 'double'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:26, <invalid sloc>> col:38 invalid 'int'
-// CHECK-NEXT: `-CompoundStmt {{.*}} <line:48:1, col:14>
+// CHECK: |-ParmVarDecl {{.*}} <col:26, <invalid sloc>> col:38 invalid 'int'
+// CHECK: `-CompoundStmt {{.*}} <line:48:1, col:14>
// CHECK-NEXT: `-ReturnStmt {{.*}} <col:3, col:10>
// CHECK-NEXT: `-ImplicitCastExpr {{.*}} <col:10> 'double' <IntegralToFloating>
// CHECK-NEXT: `-IntegerLiteral {{.*}} <col:10> 'int' 45
diff --git a/clang/test/AST/ast-dump-lambda-body-not-duplicated.cpp b/clang/test/AST/ast-dump-lambda-body-not-duplicated.cpp
index 558455e239c74..9bc0cc0ea80c9 100644
--- a/clang/test/AST/ast-dump-lambda-body-not-duplicated.cpp
+++ b/clang/test/AST/ast-dump-lambda-body-not-duplicated.cpp
@@ -33,7 +33,7 @@ void Test1() {
//
// CHECK: CXXMethodDecl {{.*}} operator() 'auto (auto) const' inline
// CHECK-NEXT: ParmVarDecl {{.*}} referenced x 'auto'
-// CHECK-NEXT: CompoundStmt 0x[[TMP1:.*]]
+// CHECK: CompoundStmt 0x[[TMP1:.*]]
// CHECK: DeclRefExpr {{.*}} 'x' 'auto'
//
// CHECK: CompoundStmt 0x[[TMP1]]
diff --git a/clang/test/AST/ast-dump-lambda.cpp b/clang/test/AST/ast-dump-lambda.cpp
index a4d3fe4fbda57..1c5ee45cbd84f 100644
--- a/clang/test/AST/ast-dump-lambda.cpp
+++ b/clang/test/AST/ast-dump-lambda.cpp
@@ -35,277 +35,279 @@ template <typename... Ts> void test(Ts... a) {
[]() -> int { return 0; };
[] [[noreturn]] () {};
}
+
+
// CHECK:Dumping test:
-// CHECK-NEXT:FunctionTemplateDecl {{.*}} <{{.*}}ast-dump-lambda.cpp:15:1, line:37:1> line:15:32{{( imported)?}} test
-// CHECK-NEXT:|-TemplateTypeParmDecl {{.*}} <col:11, col:23> col:23{{( imported)?}} referenced typename depth 0 index 0 ... Ts
-// CHECK-NEXT:`-FunctionDecl {{.*}} <col:27, line:37:1> line:15:32{{( imported)?}} test 'void (Ts...)'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:37, col:43> col:43{{( imported)?}} referenced a 'Ts...' pack
-// CHECK-NEXT: `-CompoundStmt {{.*}} <col:46, line:37:1>
-// CHECK-NEXT: |-DeclStmt {{.*}} <line:16:3, line:21:4>
-// CHECK-NEXT: | `-CXXRecordDecl {{.*}} <line:16:3, line:21:3> line:16:10{{( imported)?}}{{( <undeserialized declarations>)?}} struct V definition
-// CHECK-NEXT: | |-DefinitionData empty aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor can_const_default_init
-// CHECK-NEXT: | | |-DefaultConstructor exists trivial constexpr needs_implicit defaulted_is_constexpr
-// CHECK-NEXT: | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT: | | |-MoveConstructor exists simple trivial needs_implicit
-// CHECK-NEXT: | | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT: | | |-MoveAssignment exists simple trivial needs_implicit
-// CHECK-NEXT: | | `-Destructor simple irrelevant trivial needs_implicit
-// CHECK-NEXT: | |-CXXRecordDecl {{.*}} <col:3, col:10> col:10{{( imported)?}} implicit struct V
-// CHECK-NEXT: | `-CXXMethodDecl {{.*}} <line:17:5, line:20:5> line:17:10{{( imported)?}} f 'void ()' implicit-inline
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:14, line:20:5>
-// CHECK-NEXT: | |-LambdaExpr {{.*}} <line:18:7, col:15> '(lambda at {{.*}}ast-dump-lambda.cpp:18:7)'
-// CHECK-NEXT: | | |-CXXRecordDecl {{.*}} <col:7> col:7{{( imported)?}} implicit{{( <undeserialized declarations>)?}} class definition
-// CHECK-NEXT: | | | |-DefinitionData lambda standard_layout trivially_copyable can_const_default_init
-// CHECK-NEXT: | | | | |-DefaultConstructor
-// CHECK-NEXT: | | | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT: | | | | |-MoveConstructor exists simple trivial needs_implicit
-// CHECK-NEXT: | | | | |-CopyAssignment trivial has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT: | | | | |-MoveAssignment
-// CHECK-NEXT: | | | | `-Destructor simple irrelevant trivial needs_implicit
-// CHECK-NEXT: | | | |-CXXMethodDecl {{.*}} <col:12, col:15> col:7{{( imported)?}} operator() 'auto () const -> auto' inline
-// CHECK-NEXT: | | | | `-CompoundStmt {{.*}} <col:14, col:15>
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <col:8> col:8{{( imported)?}} implicit 'V *'
-// CHECK-NEXT: | | |-ParenListExpr {{.*}} <col:8> 'NULL TYPE'
-// CHECK-NEXT: | | | `-CXXThisExpr {{.*}} <col:8> 'V *' this
-// CHECK-NEXT: | | `-CompoundStmt {{.*}} <col:14, col:15>
-// CHECK-NEXT: | `-LambdaExpr {{.*}} <line:19:7, col:16> '(lambda at {{.*}}ast-dump-lambda.cpp:19:7)'
-// CHECK-NEXT: | |-CXXRecordDecl {{.*}} <col:7> col:7{{( imported)?}} implicit{{( <undeserialized declarations>)?}} class definition
-// CHECK-NEXT: | | |-DefinitionData lambda standard_layout trivially_copyable can_const_default_init
-// CHECK-NEXT: | | | |-DefaultConstructor defaulted_is_constexpr
-// CHECK-NEXT: | | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT: | | | |-MoveConstructor exists simple trivial needs_implicit
-// CHECK-NEXT: | | | |-CopyAssignment trivial has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT: | | | |-MoveAssignment
-// CHECK-NEXT: | | | `-Destructor simple irrelevant trivial needs_implicit
-// CHECK-NEXT: | | |-CXXMethodDecl {{.*}} <col:13, col:16> col:7{{( imported)?}} operator() 'auto () const -> auto' inline
-// CHECK-NEXT: | | | `-CompoundStmt {{.*}} <col:15, col:16>
-// CHECK-NEXT: | | `-FieldDecl {{.*}} <col:8> col:8{{( imported)?}} implicit 'V'
-// CHECK-NEXT: | |-ParenListExpr {{.*}} <col:8> 'NULL TYPE'
-// CHECK-NEXT: | | `-UnaryOperator {{.*}} <col:8> 'V' lvalue prefix '*' cannot overflow
-// CHECK-NEXT: | | `-CXXThisExpr {{.*}} <col:8> 'V *' this
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:15, col:16>
-// CHECK-NEXT: |-DeclStmt {{.*}} <line:22:3, col:11>
-// CHECK-NEXT: | |-VarDecl {{.*}} <col:3, col:7> col:7{{( imported)?}} referenced b 'int'
-// CHECK-NEXT: | `-VarDecl {{.*}} <col:3, col:10> col:10{{( imported)?}} referenced c 'int'
-// CHECK-NEXT: |-LambdaExpr {{.*}} <line:23:3, col:9> '(lambda at {{.*}}ast-dump-lambda.cpp:23:3)'
-// CHECK-NEXT: | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} implicit{{( <undeserialized declarations>)?}} class definition
-// CHECK-NEXT: | | |-DefinitionData lambda empty standard_layout trivially_copyable literal can_const_default_init
-// CHECK-NEXT: | | | |-DefaultConstructor defaulted_is_constexpr
-// CHECK-NEXT: | | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT: | | | |-MoveConstructor exists simple trivial needs_implicit
-// CHECK-NEXT: | | | |-CopyAssignment trivial has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT: | | | |-MoveAssignment
-// CHECK-NEXT: | | | `-Destructor simple irrelevant trivial needs_implicit
-// CHECK-NEXT: | | |-CXXMethodDecl {{.*}} <col:6, col:9> col:3{{( imported)?}} operator() 'auto () const' inline
-// CHECK-NEXT: | | | `-CompoundStmt {{.*}} <col:8, col:9>
-// CHECK-NEXT: | | |-CXXConversionDecl {{.*}} <col:3, col:9> col:3{{( imported)?}} implicit constexpr operator auto (*)() 'auto (*() const noexcept)()' inline
-// CHECK-NEXT: | | `-CXXMethodDecl {{.*}} <col:3, col:9> col:3{{( imported)?}} implicit __invoke 'auto ()' static inline
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:8, col:9>
-// CHECK-NEXT: |-LambdaExpr {{.*}} <line:24:3, col:19> '(lambda at {{.*}}ast-dump-lambda.cpp:24:3)'
-// CHECK-NEXT: | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} implicit{{( <undeserialized declarations>)?}} class definition
-// CHECK-NEXT: | | |-DefinitionData lambda empty standard_layout trivially_copyable literal can_const_default_init
-// CHECK-NEXT: | | | |-DefaultConstructor defaulted_is_constexpr
-// CHECK-NEXT: | | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT: | | | |-MoveConstructor exists simple trivial needs_implicit
-// CHECK-NEXT: | | | |-CopyAssignment trivial has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT: | | | |-MoveAssignment
-// CHECK-NEXT: | | | `-Destructor simple irrelevant trivial needs_implicit
-// CHECK-NEXT: | | |-CXXMethodDecl {{.*}} <col:16, col:19> col:3{{( imported)?}} operator() 'auto (int, ...) const' inline
-// CHECK-NEXT: | | | |-ParmVarDecl {{.*}} <col:6, col:10> col:10{{( imported)?}} a 'int'
-// CHECK-NEXT: | | | `-CompoundStmt {{.*}} <col:18, col:19>
-// CHECK-NEXT: | | |-CXXConversionDecl {{.*}} <col:3, col:19> col:3{{( imported)?}} implicit constexpr operator auto (*)(int, ...) 'auto (*() const noexcept)(int, ...)' inline
-// CHECK-NEXT: | | `-CXXMethodDecl {{.*}} <col:3, col:19> col:3{{( imported)?}} implicit __invoke 'auto (int, ...)' static inline
-// CHECK-NEXT: | | `-ParmVarDecl {{.*}} <col:6, col:10> col:10{{( imported)?}} a 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:18, col:19>
-// CHECK-NEXT: |-LambdaExpr {{.*}} <line:25:3, col:11> '(lambda at {{.*}}ast-dump-lambda.cpp:25:3)'
-// CHECK-NEXT: | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} implicit{{( <undeserialized declarations>)?}} class definition
-// CHECK-NEXT: | | |-DefinitionData lambda standard_layout trivially_copyable can_const_default_init
-// CHECK-NEXT: | | | |-DefaultConstructor
-// CHECK-NEXT: | | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT: | | | |-MoveConstructor exists simple trivial needs_implicit
-// CHECK-NEXT: | | | |-CopyAssignment trivial has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT: | | | |-MoveAssignment
-// CHECK-NEXT: | | | `-Destructor simple irrelevant trivial needs_implicit
-// CHECK-NEXT: | | |-CXXMethodDecl {{.*}} <col:8, col:11> col:3{{( imported)?}} operator() 'auto () const -> auto' inline
-// CHECK-NEXT: | | | `-CompoundStmt {{.*}} <col:10, col:11>
-// CHECK-NEXT: | | `-FieldDecl {{.*}} <col:4> col:4{{( imported)?}} implicit 'Ts...'
-// CHECK-NEXT: | |-ParenListExpr {{.*}} <col:4> 'NULL TYPE'
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <col:4> 'Ts' lvalue ParmVar {{.*}} 'a' 'Ts...'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:10, col:11>
-// CHECK-NEXT: |-LambdaExpr {{.*}} <line:26:3, col:8> '(lambda at {{.*}}ast-dump-lambda.cpp:26:3)'
-// CHECK-NEXT: | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} implicit{{( <undeserialized declarations>)?}} class definition
-// CHECK-NEXT: | | |-DefinitionData lambda empty standard_layout trivially_copyable literal can_const_default_init
-// CHECK-NEXT: | | | |-DefaultConstructor defaulted_is_constexpr
-// CHECK-NEXT: | | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT: | | | |-MoveConstructor exists simple trivial needs_implicit
-// CHECK-NEXT: | | | |-CopyAssignment trivial has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT: | | | |-MoveAssignment
-// CHECK-NEXT: | | | `-Destructor simple irrelevant trivial needs_implicit
-// CHECK-NEXT: | | `-CXXMethodDecl {{.*}} <col:5, col:8> col:3{{( imported)?}} operator() 'auto () const -> auto' inline
-// CHECK-NEXT: | | `-CompoundStmt {{.*}} <col:7, col:8>
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:7, col:8>
-// CHECK-NEXT: |-LambdaExpr {{.*}} <line:27:3, col:19> '(lambda at {{.*}}ast-dump-lambda.cpp:27:3)'
-// CHECK-NEXT: | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} implicit{{( <undeserialized declarations>)?}} class definition
-// CHECK-NEXT: | | |-DefinitionData lambda empty standard_layout trivially_copyable literal can_const_default_init
-// CHECK-NEXT: | | | |-DefaultConstructor defaulted_is_constexpr
-// CHECK-NEXT: | | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT: | | | |-MoveConstructor exists simple trivial needs_implicit
-// CHECK-NEXT: | | | |-CopyAssignment trivial has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT: | | | |-MoveAssignment
-// CHECK-NEXT: | | | `-Destructor simple irrelevant trivial needs_implicit
-// CHECK-NEXT: | | `-CXXMethodDecl {{.*}} <col:5, col:19> col:3{{( imported)?}} operator() 'auto () const -> auto' inline
-// CHECK-NEXT: | | `-CompoundStmt {{.*}} <col:7, col:19>
-// CHECK-NEXT: | | `-ReturnStmt {{.*}} <col:9, col:16>
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <col:16> 'const int' lvalue Var {{.*}} 'b' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:7, col:19>
-// CHECK-NEXT: | `-ReturnStmt {{.*}} <col:9, col:16>
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <col:16> 'const int' lvalue Var {{.*}} 'b' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: |-LambdaExpr {{.*}} <line:28:3, col:8> '(lambda at {{.*}}ast-dump-lambda.cpp:28:3)'
-// CHECK-NEXT: | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} implicit{{( <undeserialized declarations>)?}} class definition
-// CHECK-NEXT: | | |-DefinitionData lambda empty standard_layout trivially_copyable literal can_const_default_init
-// CHECK-NEXT: | | | |-DefaultConstructor defaulted_is_constexpr
-// CHECK-NEXT: | | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT: | | | |-MoveConstructor exists simple trivial needs_implicit
-// CHECK-NEXT: | | | |-CopyAssignment trivial has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT: | | | |-MoveAssignment
-// CHECK-NEXT: | | | `-Destructor simple irrelevant trivial needs_implicit
-// CHECK-NEXT: | | `-CXXMethodDecl {{.*}} <col:5, col:8> col:3{{( imported)?}} operator() 'auto () const -> auto' inline
-// CHECK-NEXT: | | `-CompoundStmt {{.*}} <col:7, col:8>
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:7, col:8>
-// CHECK-NEXT: |-LambdaExpr {{.*}} <line:29:3, col:19> '(lambda at {{.*}}ast-dump-lambda.cpp:29:3)'
-// CHECK-NEXT: | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} implicit{{( <undeserialized declarations>)?}} class definition
-// CHECK-NEXT: | | |-DefinitionData lambda empty standard_layout trivially_copyable literal can_const_default_init
-// CHECK-NEXT: | | | |-DefaultConstructor defaulted_is_constexpr
-// CHECK-NEXT: | | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT: | | | |-MoveConstructor exists simple trivial needs_implicit
-// CHECK-NEXT: | | | |-CopyAssignment trivial has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT: | | | |-MoveAssignment
-// CHECK-NEXT: | | | `-Destructor simple irrelevant trivial needs_implicit
-// CHECK-NEXT: | | `-CXXMethodDecl {{.*}} <col:5, col:19> col:3{{( imported)?}} operator() 'auto () const -> auto' inline
-// CHECK-NEXT: | | `-CompoundStmt {{.*}} <col:7, col:19>
-// CHECK-NEXT: | | `-ReturnStmt {{.*}} <col:9, col:16>
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <col:16> 'int' lvalue Var {{.*}} 'c' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:7, col:19>
-// CHECK-NEXT: | `-ReturnStmt {{.*}} <col:9, col:16>
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <col:16> 'int' lvalue Var {{.*}} 'c' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: |-LambdaExpr {{.*}} <line:30:3, col:27> '(lambda at {{.*}}ast-dump-lambda.cpp:30:3)'
-// CHECK-NEXT: | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} implicit{{( <undeserialized declarations>)?}} class definition
-// CHECK-NEXT: | | |-DefinitionData lambda trivially_copyable literal can_const_default_init
-// CHECK-NEXT: | | | |-DefaultConstructor
-// CHECK-NEXT: | | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT: | | | |-MoveConstructor exists simple trivial needs_implicit
-// CHECK-NEXT: | | | |-CopyAssignment trivial has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT: | | | |-MoveAssignment
-// CHECK-NEXT: | | | `-Destructor simple irrelevant trivial needs_implicit
-// CHECK-NEXT: | | |-CXXMethodDecl {{.*}} <col:9, col:27> col:3{{( imported)?}} operator() 'auto () const -> auto' inline
-// CHECK-NEXT: | | | `-CompoundStmt {{.*}} <col:11, col:27>
-// CHECK-NEXT: | | | `-ReturnStmt {{.*}} <col:13, col:24>
-// CHECK-NEXT: | | | `-BinaryOperator {{.*}} <col:20, col:24> 'int' '+'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:20> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:20> 'const int' lvalue Var {{.*}} 'b' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:24> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:24> 'int' lvalue Var {{.*}} 'c' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <col:4> col:4{{( imported)?}} implicit 'int'
-// CHECK-NEXT: | | `-FieldDecl {{.*}} <col:8> col:8{{( imported)?}} implicit 'int &'
-// CHECK-NEXT: | |-ImplicitCastExpr {{.*}} <col:4> 'int' <LValueToRValue>
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <col:4> 'int' lvalue Var {{.*}} 'b' 'int'
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <col:8> 'int' lvalue Var {{.*}} 'c' 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:11, col:27>
-// CHECK-NEXT: | `-ReturnStmt {{.*}} <col:13, col:24>
-// CHECK-NEXT: | `-BinaryOperator {{.*}} <col:20, col:24> 'int' '+'
-// CHECK-NEXT: | |-ImplicitCastExpr {{.*}} <col:20> 'int' <LValueToRValue>
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <col:20> 'const int' lvalue Var {{.*}} 'b' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-ImplicitCastExpr {{.*}} <col:24> 'int' <LValueToRValue>
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <col:24> 'int' lvalue Var {{.*}} 'c' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: |-LambdaExpr {{.*}} <line:31:3, col:19> '(lambda at {{.*}}ast-dump-lambda.cpp:31:3)'
-// CHECK-NEXT: | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} implicit{{( <undeserialized declarations>)?}} class definition
-// CHECK-NEXT: | | |-DefinitionData lambda standard_layout trivially_copyable can_const_default_init
-// CHECK-NEXT: | | | |-DefaultConstructor
-// CHECK-NEXT: | | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT: | | | |-MoveConstructor exists simple trivial needs_implicit
-// CHECK-NEXT: | | | |-CopyAssignment trivial has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT: | | | |-MoveAssignment
-// CHECK-NEXT: | | | `-Destructor simple irrelevant trivial needs_implicit
-// CHECK-NEXT: | | |-CXXMethodDecl {{.*}} <col:16, col:19> col:3{{( imported)?}} operator() 'auto () const -> auto' inline
-// CHECK-NEXT: | | | `-CompoundStmt {{.*}} <col:18, col:19>
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <col:4> col:4{{( imported)?}} implicit 'Ts...'
-// CHECK-NEXT: | | `-FieldDecl {{.*}} <col:10> col:10{{( imported)?}} implicit 'int'
-// CHECK-NEXT: | |-ParenListExpr {{.*}} <col:4> 'NULL TYPE'
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <col:4> 'Ts' lvalue ParmVar {{.*}} 'a' 'Ts...'
-// CHECK-NEXT: | |-IntegerLiteral {{.*}} <col:14> 'int' 12
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:18, col:19>
-// CHECK-NEXT: |-LambdaExpr {{.*}} <line:32:3, col:19> '(lambda at {{.*}}ast-dump-lambda.cpp:32:3)'
-// CHECK-NEXT: | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} implicit{{( <undeserialized declarations>)?}} class definition
-// CHECK-NEXT: | | |-DefinitionData lambda empty standard_layout trivially_copyable literal can_const_default_init
-// CHECK-NEXT: | | | |-DefaultConstructor defaulted_is_constexpr
-// CHECK-NEXT: | | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT: | | | |-MoveConstructor exists simple trivial needs_implicit
-// CHECK-NEXT: | | | |-CopyAssignment trivial has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT: | | | |-MoveAssignment
-// CHECK-NEXT: | | | `-Destructor simple irrelevant trivial needs_implicit
-// CHECK-NEXT: | | |-CXXMethodDecl {{.*}} <col:8, col:19> col:3{{( imported)?}} constexpr operator() 'auto () const' inline
-// CHECK-NEXT: | | | `-CompoundStmt {{.*}} <col:18, col:19>
-// CHECK-NEXT: | | |-CXXConversionDecl {{.*}} <col:3, col:19> col:3{{( imported)?}} implicit constexpr operator auto (*)() 'auto (*() const noexcept)()' inline
-// CHECK-NEXT: | | `-CXXMethodDecl {{.*}} <col:3, col:19> col:3{{( imported)?}} implicit constexpr __invoke 'auto ()' static inline
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:18, col:19>
-// CHECK-NEXT: |-LambdaExpr {{.*}} <line:33:3, col:17> '(lambda at {{.*}}ast-dump-lambda.cpp:33:3)'
-// CHECK-NEXT: | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} implicit{{( <undeserialized declarations>)?}} class definition
-// CHECK-NEXT: | | |-DefinitionData lambda empty standard_layout trivially_copyable literal can_const_default_init
-// CHECK-NEXT: | | | |-DefaultConstructor defaulted_is_constexpr
-// CHECK-NEXT: | | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT: | | | |-MoveConstructor exists simple trivial needs_implicit
-// CHECK-NEXT: | | | |-CopyAssignment trivial has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT: | | | |-MoveAssignment
-// CHECK-NEXT: | | | `-Destructor simple irrelevant trivial needs_implicit
-// CHECK-NEXT: | | |-CXXMethodDecl {{.*}} <col:8, col:17> col:3{{( imported)?}} operator() 'auto ()' inline
-// CHECK-NEXT: | | | `-CompoundStmt {{.*}} <col:16, col:17>
-// CHECK-NEXT: | | |-CXXConversionDecl {{.*}} <col:3, col:17> col:3{{( imported)?}} implicit constexpr operator auto (*)() 'auto (*() const noexcept)()' inline
-// CHECK-NEXT: | | `-CXXMethodDecl {{.*}} <col:3, col:17> col:3{{( imported)?}} implicit __invoke 'auto ()' static inline
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:16, col:17>
-// CHECK-NEXT: |-LambdaExpr {{.*}} <line:34:3, col:18> '(lambda at {{.*}}ast-dump-lambda.cpp:34:3)'
-// CHECK-NEXT: | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} implicit{{( <undeserialized declarations>)?}} class definition
-// CHECK-NEXT: | | |-DefinitionData lambda empty standard_layout trivially_copyable literal can_const_default_init
-// CHECK-NEXT: | | | |-DefaultConstructor defaulted_is_constexpr
-// CHECK-NEXT: | | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT: | | | |-MoveConstructor exists simple trivial needs_implicit
-// CHECK-NEXT: | | | |-CopyAssignment trivial has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT: | | | |-MoveAssignment
-// CHECK-NEXT: | | | `-Destructor simple irrelevant trivial needs_implicit
-// CHECK-NEXT: | | |-CXXMethodDecl {{.*}} <col:8, col:18> col:3{{( imported)?}} operator() 'auto () const noexcept' inline
-// CHECK-NEXT: | | | `-CompoundStmt {{.*}} <col:17, col:18>
-// CHECK-NEXT: | | |-CXXConversionDecl {{.*}} <col:3, col:18> col:3{{( imported)?}} implicit constexpr operator auto (*)() noexcept 'auto (*() const noexcept)() noexcept' inline
-// CHECK-NEXT: | | `-CXXMethodDecl {{.*}} <col:3, col:18> col:3{{( imported)?}} implicit __invoke 'auto () noexcept' static inline
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:17, col:18>
-// CHECK-NEXT: |-LambdaExpr {{.*}} <line:35:3, col:27> '(lambda at {{.*}}ast-dump-lambda.cpp:35:3)'
-// CHECK-NEXT: | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} implicit{{( <undeserialized declarations>)?}} class definition
-// CHECK-NEXT: | | |-DefinitionData lambda empty standard_layout trivially_copyable literal can_const_default_init
-// CHECK-NEXT: | | | |-DefaultConstructor defaulted_is_constexpr
-// CHECK-NEXT: | | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT: | | | |-MoveConstructor exists simple trivial needs_implicit
-// CHECK-NEXT: | | | |-CopyAssignment trivial has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT: | | | |-MoveAssignment
-// CHECK-NEXT: | | | `-Destructor simple irrelevant trivial needs_implicit
-// CHECK-NEXT: | | |-CXXMethodDecl {{.*}} <col:11, col:27> col:3{{( imported)?}} operator() 'auto () const -> int' inline
-// CHECK-NEXT: | | | `-CompoundStmt {{.*}} <col:15, col:27>
-// CHECK-NEXT: | | | `-ReturnStmt {{.*}} <col:17, col:24>
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:24> 'int' 0
-// CHECK-NEXT: | | |-CXXConversionDecl {{.*}} <col:3, col:27> col:3{{( imported)?}} implicit constexpr operator int (*)() 'auto (*() const noexcept)() -> int' inline
-// CHECK-NEXT: | | `-CXXMethodDecl {{.*}} <col:3, col:27> col:3{{( imported)?}} implicit __invoke 'auto () -> int' static inline
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:15, col:27>
-// CHECK-NEXT: | `-ReturnStmt {{.*}} <col:17, col:24>
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:24> 'int' 0
-// CHECK-NEXT: `-LambdaExpr {{.*}} <line:36:3, col:23> '(lambda at {{.*}}ast-dump-lambda.cpp:36:3)'
-// CHECK-NEXT: |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} implicit{{( <undeserialized declarations>)?}} class definition
-// CHECK-NEXT: | |-DefinitionData lambda empty standard_layout trivially_copyable literal can_const_default_init
-// CHECK-NEXT: | | |-DefaultConstructor defaulted_is_constexpr
-// CHECK-NEXT: | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT: | | |-MoveConstructor exists simple trivial needs_implicit
-// CHECK-NEXT: | | |-CopyAssignment trivial has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT: | | |-MoveAssignment
-// CHECK-NEXT: | | `-Destructor simple irrelevant trivial needs_implicit
-// CHECK-NEXT: | |-CXXMethodDecl {{.*}} <col:20, col:23> col:3{{( imported)?}} operator() 'auto () const' inline
-// CHECK-NEXT: | | |-CompoundStmt {{.*}} <col:22, col:23>
-// CHECK-NEXT: | | `-CXX11NoReturnAttr {{.*}} <col:8> noreturn
-// CHECK-NEXT: | |-CXXConversionDecl {{.*}} <col:3, col:23> col:3{{( imported)?}} implicit constexpr operator auto (*)() 'auto (*() const noexcept)()' inline
-// CHECK-NEXT: | `-CXXMethodDecl {{.*}} <col:3, col:23> col:3{{( imported)?}} implicit __invoke 'auto ()' static inline
-// CHECK-NEXT: `-CompoundStmt {{.*}} <col:22, col:23>
+// CHECK:FunctionTemplateDecl {{.*}} <{{.*}}ast-dump-lambda.cpp:15:1, line:37:1> line:15:32{{( imported)?}} test
+// CHECK:|-TemplateTypeParmDecl {{.*}} <col:11, col:23> col:23{{( imported)?}} referenced typename depth 0 index 0 ... Ts
+// CHECK:`-FunctionDecl {{.*}} <col:27, line:37:1> line:15:32{{( imported)?}} test 'void (Ts...)'
+// CHECK: |-ParmVarDecl {{.*}} <col:37, col:43> col:43{{( imported)?}} referenced a 'Ts...' pack
+// CHECK: `-CompoundStmt {{.*}} <col:46, line:37:1>
+// CHECK: |-DeclStmt {{.*}} <line:16:3, line:21:4>
+// CHECK: | `-CXXRecordDecl {{.*}} <line:16:3, line:21:3> line:16:10{{( imported)?}}{{( <undeserialized declarations>)?}} struct V definition
+// CHECK: | |-DefinitionData empty aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor can_const_default_init
+// CHECK: | | |-DefaultConstructor exists trivial constexpr needs_implicit defaulted_is_constexpr
+// CHECK: | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | |-MoveConstructor exists simple trivial needs_implicit
+// CHECK: | | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | |-MoveAssignment exists simple trivial needs_implicit
+// CHECK: | | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK: | |-CXXRecordDecl {{.*}} <col:3, col:10> col:10{{( imported)?}} implicit struct V
+// CHECK: | `-CXXMethodDecl {{.*}} <line:17:5, line:20:5> line:17:10{{( imported)?}} f 'void ()' implicit-inline
+// CHECK: | `-CompoundStmt {{.*}} <col:14, line:20:5>
+// CHECK: | |-LambdaExpr {{.*}} <line:18:7, col:15> '(lambda at {{.*}}ast-dump-lambda.cpp:18:7)'
+// CHECK: | | |-CXXRecordDecl {{.*}} <col:7> col:7{{( imported)?}} implicit{{( <undeserialized declarations>)?}} class definition
+// CHECK: | | | |-DefinitionData lambda standard_layout trivially_copyable can_const_default_init
+// CHECK: | | | | |-DefaultConstructor
+// CHECK: | | | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | | | |-MoveConstructor exists simple trivial needs_implicit
+// CHECK: | | | | |-CopyAssignment trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | | | |-MoveAssignment
+// CHECK: | | | | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK: | | | |-CXXMethodDecl {{.*}} <col:12, col:15> col:7{{( imported)?}} operator() 'auto () const -> auto' inline
+// CHECK: | | | | `-CompoundStmt {{.*}} <col:14, col:15>
+// CHECK: | | | `-FieldDecl {{.*}} <col:8> col:8{{( imported)?}} implicit 'V *'
+// CHECK: | | |-ParenListExpr {{.*}} <col:8> 'NULL TYPE'
+// CHECK: | | | `-CXXThisExpr {{.*}} <col:8> 'V *' this
+// CHECK: | | `-CompoundStmt {{.*}} <col:14, col:15>
+// CHECK: | `-LambdaExpr {{.*}} <line:19:7, col:16> '(lambda at {{.*}}ast-dump-lambda.cpp:19:7)'
+// CHECK: | |-CXXRecordDecl {{.*}} <col:7> col:7{{( imported)?}} implicit{{( <undeserialized declarations>)?}} class definition
+// CHECK: | | |-DefinitionData lambda standard_layout trivially_copyable can_const_default_init
+// CHECK: | | | |-DefaultConstructor defaulted_is_constexpr
+// CHECK: | | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | | |-MoveConstructor exists simple trivial needs_implicit
+// CHECK: | | | |-CopyAssignment trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | | |-MoveAssignment
+// CHECK: | | | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK: | | |-CXXMethodDecl {{.*}} <col:13, col:16> col:7{{( imported)?}} operator() 'auto () const -> auto' inline
+// CHECK: | | | `-CompoundStmt {{.*}} <col:15, col:16>
+// CHECK: | | `-FieldDecl {{.*}} <col:8> col:8{{( imported)?}} implicit 'V'
+// CHECK: | |-ParenListExpr {{.*}} <col:8> 'NULL TYPE'
+// CHECK: | | `-UnaryOperator {{.*}} <col:8> 'V' lvalue prefix '*' cannot overflow
+// CHECK: | | `-CXXThisExpr {{.*}} <col:8> 'V *' this
+// CHECK: | `-CompoundStmt {{.*}} <col:15, col:16>
+// CHECK: |-DeclStmt {{.*}} <line:22:3, col:11>
+// CHECK: | |-VarDecl {{.*}} <col:3, col:7> col:7{{( imported)?}} referenced b 'int'
+// CHECK: | `-VarDecl {{.*}} <col:3, col:10> col:10{{( imported)?}} referenced c 'int'
+// CHECK: |-LambdaExpr {{.*}} <line:23:3, col:9> '(lambda at {{.*}}ast-dump-lambda.cpp:23:3)'
+// CHECK: | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} implicit{{( <undeserialized declarations>)?}} class definition
+// CHECK: | | |-DefinitionData lambda empty standard_layout trivially_copyable literal can_const_default_init
+// CHECK: | | | |-DefaultConstructor defaulted_is_constexpr
+// CHECK: | | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | | |-MoveConstructor exists simple trivial needs_implicit
+// CHECK: | | | |-CopyAssignment trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | | |-MoveAssignment
+// CHECK: | | | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK: | | |-CXXMethodDecl {{.*}} <col:6, col:9> col:3{{( imported)?}} operator() 'auto () const' inline
+// CHECK: | | | `-CompoundStmt {{.*}} <col:8, col:9>
+// CHECK: | | |-CXXConversionDecl {{.*}} <col:3, col:9> col:3{{( imported)?}} implicit constexpr operator auto (*)() 'auto (*() const noexcept)()' inline
+// CHECK: | | `-CXXMethodDecl {{.*}} <col:3, col:9> col:3{{( imported)?}} implicit __invoke 'auto ()' static inline
+// CHECK: | `-CompoundStmt {{.*}} <col:8, col:9>
+// CHECK: |-LambdaExpr {{.*}} <line:24:3, col:19> '(lambda at {{.*}}ast-dump-lambda.cpp:24:3)'
+// CHECK: | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} implicit{{( <undeserialized declarations>)?}} class definition
+// CHECK: | | |-DefinitionData lambda empty standard_layout trivially_copyable literal can_const_default_init
+// CHECK: | | | |-DefaultConstructor defaulted_is_constexpr
+// CHECK: | | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | | |-MoveConstructor exists simple trivial needs_implicit
+// CHECK: | | | |-CopyAssignment trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | | |-MoveAssignment
+// CHECK: | | | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK: | | |-CXXMethodDecl {{.*}} <col:16, col:19> col:3{{( imported)?}} operator() 'auto (int, ...) const' inline
+// CHECK: | | | |-ParmVarDecl {{.*}} <col:6, col:10> col:10{{( imported)?}} a 'int'
+// CHECK: | | | `-CompoundStmt {{.*}} <col:18, col:19>
+// CHECK: | | |-CXXConversionDecl {{.*}} <col:3, col:19> col:3{{( imported)?}} implicit constexpr operator auto (*)(int, ...) 'auto (*() const noexcept)(int, ...)' inline
+// CHECK: | | `-CXXMethodDecl {{.*}} <col:3, col:19> col:3{{( imported)?}} implicit __invoke 'auto (int, ...)' static inline
+// CHECK: | | `-ParmVarDecl {{.*}} <col:6, col:10> col:10{{( imported)?}} a 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:18, col:19>
+// CHECK: |-LambdaExpr {{.*}} <line:25:3, col:11> '(lambda at {{.*}}ast-dump-lambda.cpp:25:3)'
+// CHECK: | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} implicit{{( <undeserialized declarations>)?}} class definition
+// CHECK: | | |-DefinitionData lambda standard_layout trivially_copyable can_const_default_init
+// CHECK: | | | |-DefaultConstructor
+// CHECK: | | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | | |-MoveConstructor exists simple trivial needs_implicit
+// CHECK: | | | |-CopyAssignment trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | | |-MoveAssignment
+// CHECK: | | | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK: | | |-CXXMethodDecl {{.*}} <col:8, col:11> col:3{{( imported)?}} operator() 'auto () const -> auto' inline
+// CHECK: | | | `-CompoundStmt {{.*}} <col:10, col:11>
+// CHECK: | | `-FieldDecl {{.*}} <col:4> col:4{{( imported)?}} implicit 'Ts...'
+// CHECK: | |-ParenListExpr {{.*}} <col:4> 'NULL TYPE'
+// CHECK: | | `-DeclRefExpr {{.*}} <col:4> 'Ts' lvalue ParmVar {{.*}} 'a' 'Ts...'
+// CHECK: | `-CompoundStmt {{.*}} <col:10, col:11>
+// CHECK: |-LambdaExpr {{.*}} <line:26:3, col:8> '(lambda at {{.*}}ast-dump-lambda.cpp:26:3)'
+// CHECK: | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} implicit{{( <undeserialized declarations>)?}} class definition
+// CHECK: | | |-DefinitionData lambda empty standard_layout trivially_copyable literal can_const_default_init
+// CHECK: | | | |-DefaultConstructor defaulted_is_constexpr
+// CHECK: | | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | | |-MoveConstructor exists simple trivial needs_implicit
+// CHECK: | | | |-CopyAssignment trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | | |-MoveAssignment
+// CHECK: | | | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK: | | `-CXXMethodDecl {{.*}} <col:5, col:8> col:3{{( imported)?}} operator() 'auto () const -> auto' inline
+// CHECK: | | `-CompoundStmt {{.*}} <col:7, col:8>
+// CHECK: | `-CompoundStmt {{.*}} <col:7, col:8>
+// CHECK: |-LambdaExpr {{.*}} <line:27:3, col:19> '(lambda at {{.*}}ast-dump-lambda.cpp:27:3)'
+// CHECK: | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} implicit{{( <undeserialized declarations>)?}} class definition
+// CHECK: | | |-DefinitionData lambda empty standard_layout trivially_copyable literal can_const_default_init
+// CHECK: | | | |-DefaultConstructor defaulted_is_constexpr
+// CHECK: | | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | | |-MoveConstructor exists simple trivial needs_implicit
+// CHECK: | | | |-CopyAssignment trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | | |-MoveAssignment
+// CHECK: | | | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK: | | `-CXXMethodDecl {{.*}} <col:5, col:19> col:3{{( imported)?}} operator() 'auto () const -> auto' inline
+// CHECK: | | `-CompoundStmt {{.*}} <col:7, col:19>
+// CHECK: | | `-ReturnStmt {{.*}} <col:9, col:16>
+// CHECK: | | `-DeclRefExpr {{.*}} <col:16> 'const int' lvalue Var {{.*}} 'b' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CompoundStmt {{.*}} <col:7, col:19>
+// CHECK: | `-ReturnStmt {{.*}} <col:9, col:16>
+// CHECK: | `-DeclRefExpr {{.*}} <col:16> 'const int' lvalue Var {{.*}} 'b' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: |-LambdaExpr {{.*}} <line:28:3, col:8> '(lambda at {{.*}}ast-dump-lambda.cpp:28:3)'
+// CHECK: | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} implicit{{( <undeserialized declarations>)?}} class definition
+// CHECK: | | |-DefinitionData lambda empty standard_layout trivially_copyable literal can_const_default_init
+// CHECK: | | | |-DefaultConstructor defaulted_is_constexpr
+// CHECK: | | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | | |-MoveConstructor exists simple trivial needs_implicit
+// CHECK: | | | |-CopyAssignment trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | | |-MoveAssignment
+// CHECK: | | | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK: | | `-CXXMethodDecl {{.*}} <col:5, col:8> col:3{{( imported)?}} operator() 'auto () const -> auto' inline
+// CHECK: | | `-CompoundStmt {{.*}} <col:7, col:8>
+// CHECK: | `-CompoundStmt {{.*}} <col:7, col:8>
+// CHECK: |-LambdaExpr {{.*}} <line:29:3, col:19> '(lambda at {{.*}}ast-dump-lambda.cpp:29:3)'
+// CHECK: | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} implicit{{( <undeserialized declarations>)?}} class definition
+// CHECK: | | |-DefinitionData lambda empty standard_layout trivially_copyable literal can_const_default_init
+// CHECK: | | | |-DefaultConstructor defaulted_is_constexpr
+// CHECK: | | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | | |-MoveConstructor exists simple trivial needs_implicit
+// CHECK: | | | |-CopyAssignment trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | | |-MoveAssignment
+// CHECK: | | | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK: | | `-CXXMethodDecl {{.*}} <col:5, col:19> col:3{{( imported)?}} operator() 'auto () const -> auto' inline
+// CHECK: | | `-CompoundStmt {{.*}} <col:7, col:19>
+// CHECK: | | `-ReturnStmt {{.*}} <col:9, col:16>
+// CHECK: | | `-DeclRefExpr {{.*}} <col:16> 'int' lvalue Var {{.*}} 'c' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CompoundStmt {{.*}} <col:7, col:19>
+// CHECK: | `-ReturnStmt {{.*}} <col:9, col:16>
+// CHECK: | `-DeclRefExpr {{.*}} <col:16> 'int' lvalue Var {{.*}} 'c' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: |-LambdaExpr {{.*}} <line:30:3, col:27> '(lambda at {{.*}}ast-dump-lambda.cpp:30:3)'
+// CHECK: | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} implicit{{( <undeserialized declarations>)?}} class definition
+// CHECK: | | |-DefinitionData lambda trivially_copyable literal can_const_default_init
+// CHECK: | | | |-DefaultConstructor
+// CHECK: | | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | | |-MoveConstructor exists simple trivial needs_implicit
+// CHECK: | | | |-CopyAssignment trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | | |-MoveAssignment
+// CHECK: | | | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK: | | |-CXXMethodDecl {{.*}} <col:9, col:27> col:3{{( imported)?}} operator() 'auto () const -> auto' inline
+// CHECK: | | | `-CompoundStmt {{.*}} <col:11, col:27>
+// CHECK: | | | `-ReturnStmt {{.*}} <col:13, col:24>
+// CHECK: | | | `-BinaryOperator {{.*}} <col:20, col:24> 'int' '+'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:20> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:20> 'const int' lvalue Var {{.*}} 'b' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:24> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:24> 'int' lvalue Var {{.*}} 'c' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-FieldDecl {{.*}} <col:4> col:4{{( imported)?}} implicit 'int'
+// CHECK: | | `-FieldDecl {{.*}} <col:8> col:8{{( imported)?}} implicit 'int &'
+// CHECK: | |-ImplicitCastExpr {{.*}} <col:4> 'int' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr {{.*}} <col:4> 'int' lvalue Var {{.*}} 'b' 'int'
+// CHECK: | |-DeclRefExpr {{.*}} <col:8> 'int' lvalue Var {{.*}} 'c' 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:11, col:27>
+// CHECK: | `-ReturnStmt {{.*}} <col:13, col:24>
+// CHECK: | `-BinaryOperator {{.*}} <col:20, col:24> 'int' '+'
+// CHECK: | |-ImplicitCastExpr {{.*}} <col:20> 'int' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr {{.*}} <col:20> 'const int' lvalue Var {{.*}} 'b' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-ImplicitCastExpr {{.*}} <col:24> 'int' <LValueToRValue>
+// CHECK: | `-DeclRefExpr {{.*}} <col:24> 'int' lvalue Var {{.*}} 'c' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: |-LambdaExpr {{.*}} <line:31:3, col:19> '(lambda at {{.*}}ast-dump-lambda.cpp:31:3)'
+// CHECK: | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} implicit{{( <undeserialized declarations>)?}} class definition
+// CHECK: | | |-DefinitionData lambda standard_layout trivially_copyable can_const_default_init
+// CHECK: | | | |-DefaultConstructor
+// CHECK: | | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | | |-MoveConstructor exists simple trivial needs_implicit
+// CHECK: | | | |-CopyAssignment trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | | |-MoveAssignment
+// CHECK: | | | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK: | | |-CXXMethodDecl {{.*}} <col:16, col:19> col:3{{( imported)?}} operator() 'auto () const -> auto' inline
+// CHECK: | | | `-CompoundStmt {{.*}} <col:18, col:19>
+// CHECK: | | |-FieldDecl {{.*}} <col:4> col:4{{( imported)?}} implicit 'Ts...'
+// CHECK: | | `-FieldDecl {{.*}} <col:10> col:10{{( imported)?}} implicit 'int'
+// CHECK: | |-ParenListExpr {{.*}} <col:4> 'NULL TYPE'
+// CHECK: | | `-DeclRefExpr {{.*}} <col:4> 'Ts' lvalue ParmVar {{.*}} 'a' 'Ts...'
+// CHECK: | |-IntegerLiteral {{.*}} <col:14> 'int' 12
+// CHECK: | `-CompoundStmt {{.*}} <col:18, col:19>
+// CHECK: |-LambdaExpr {{.*}} <line:32:3, col:19> '(lambda at {{.*}}ast-dump-lambda.cpp:32:3)'
+// CHECK: | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} implicit{{( <undeserialized declarations>)?}} class definition
+// CHECK: | | |-DefinitionData lambda empty standard_layout trivially_copyable literal can_const_default_init
+// CHECK: | | | |-DefaultConstructor defaulted_is_constexpr
+// CHECK: | | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | | |-MoveConstructor exists simple trivial needs_implicit
+// CHECK: | | | |-CopyAssignment trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | | |-MoveAssignment
+// CHECK: | | | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK: | | |-CXXMethodDecl {{.*}} <col:8, col:19> col:3{{( imported)?}} constexpr operator() 'auto () const' inline
+// CHECK: | | | `-CompoundStmt {{.*}} <col:18, col:19>
+// CHECK: | | |-CXXConversionDecl {{.*}} <col:3, col:19> col:3{{( imported)?}} implicit constexpr operator auto (*)() 'auto (*() const noexcept)()' inline
+// CHECK: | | `-CXXMethodDecl {{.*}} <col:3, col:19> col:3{{( imported)?}} implicit constexpr __invoke 'auto ()' static inline
+// CHECK: | `-CompoundStmt {{.*}} <col:18, col:19>
+// CHECK: |-LambdaExpr {{.*}} <line:33:3, col:17> '(lambda at {{.*}}ast-dump-lambda.cpp:33:3)'
+// CHECK: | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} implicit{{( <undeserialized declarations>)?}} class definition
+// CHECK: | | |-DefinitionData lambda empty standard_layout trivially_copyable literal can_const_default_init
+// CHECK: | | | |-DefaultConstructor defaulted_is_constexpr
+// CHECK: | | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | | |-MoveConstructor exists simple trivial needs_implicit
+// CHECK: | | | |-CopyAssignment trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | | |-MoveAssignment
+// CHECK: | | | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK: | | |-CXXMethodDecl {{.*}} <col:8, col:17> col:3{{( imported)?}} operator() 'auto ()' inline
+// CHECK: | | | `-CompoundStmt {{.*}} <col:16, col:17>
+// CHECK: | | |-CXXConversionDecl {{.*}} <col:3, col:17> col:3{{( imported)?}} implicit constexpr operator auto (*)() 'auto (*() const noexcept)()' inline
+// CHECK: | | `-CXXMethodDecl {{.*}} <col:3, col:17> col:3{{( imported)?}} implicit __invoke 'auto ()' static inline
+// CHECK: | `-CompoundStmt {{.*}} <col:16, col:17>
+// CHECK: |-LambdaExpr {{.*}} <line:34:3, col:18> '(lambda at {{.*}}ast-dump-lambda.cpp:34:3)'
+// CHECK: | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} implicit{{( <undeserialized declarations>)?}} class definition
+// CHECK: | | |-DefinitionData lambda empty standard_layout trivially_copyable literal can_const_default_init
+// CHECK: | | | |-DefaultConstructor defaulted_is_constexpr
+// CHECK: | | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | | |-MoveConstructor exists simple trivial needs_implicit
+// CHECK: | | | |-CopyAssignment trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | | |-MoveAssignment
+// CHECK: | | | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK: | | |-CXXMethodDecl {{.*}} <col:8, col:18> col:3{{( imported)?}} operator() 'auto () const noexcept' inline
+// CHECK: | | | `-CompoundStmt {{.*}} <col:17, col:18>
+// CHECK: | | |-CXXConversionDecl {{.*}} <col:3, col:18> col:3{{( imported)?}} implicit constexpr operator auto (*)() noexcept 'auto (*() const noexcept)() noexcept' inline
+// CHECK: | | `-CXXMethodDecl {{.*}} <col:3, col:18> col:3{{( imported)?}} implicit __invoke 'auto () noexcept' static inline
+// CHECK: | `-CompoundStmt {{.*}} <col:17, col:18>
+// CHECK: |-LambdaExpr {{.*}} <line:35:3, col:27> '(lambda at {{.*}}ast-dump-lambda.cpp:35:3)'
+// CHECK: | |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} implicit{{( <undeserialized declarations>)?}} class definition
+// CHECK: | | |-DefinitionData lambda empty standard_layout trivially_copyable literal can_const_default_init
+// CHECK: | | | |-DefaultConstructor defaulted_is_constexpr
+// CHECK: | | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | | |-MoveConstructor exists simple trivial needs_implicit
+// CHECK: | | | |-CopyAssignment trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | | |-MoveAssignment
+// CHECK: | | | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK: | | |-CXXMethodDecl {{.*}} <col:11, col:27> col:3{{( imported)?}} operator() 'auto () const -> int' inline
+// CHECK: | | | `-CompoundStmt {{.*}} <col:15, col:27>
+// CHECK: | | | `-ReturnStmt {{.*}} <col:17, col:24>
+// CHECK: | | | `-IntegerLiteral {{.*}} <col:24> 'int' 0
+// CHECK: | | |-CXXConversionDecl {{.*}} <col:3, col:27> col:3{{( imported)?}} implicit constexpr operator int (*)() 'auto (*() const noexcept)() -> int' inline
+// CHECK: | | `-CXXMethodDecl {{.*}} <col:3, col:27> col:3{{( imported)?}} implicit __invoke 'auto () -> int' static inline
+// CHECK: | `-CompoundStmt {{.*}} <col:15, col:27>
+// CHECK: | `-ReturnStmt {{.*}} <col:17, col:24>
+// CHECK: | `-IntegerLiteral {{.*}} <col:24> 'int' 0
+// CHECK: `-LambdaExpr {{.*}} <line:36:3, col:23> '(lambda at {{.*}}ast-dump-lambda.cpp:36:3)'
+// CHECK: |-CXXRecordDecl {{.*}} <col:3> col:3{{( imported)?}} implicit{{( <undeserialized declarations>)?}} class definition
+// CHECK: | |-DefinitionData lambda empty standard_layout trivially_copyable literal can_const_default_init
+// CHECK: | | |-DefaultConstructor defaulted_is_constexpr
+// CHECK: | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | |-MoveConstructor exists simple trivial needs_implicit
+// CHECK: | | |-CopyAssignment trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | |-MoveAssignment
+// CHECK: | | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK: | |-CXXMethodDecl {{.*}} <col:20, col:23> col:3{{( imported)?}} operator() 'auto () const' inline
+// CHECK: | | |-CompoundStmt {{.*}} <col:22, col:23>
+// CHECK: | | `-attrDetails: CXX11NoReturnAttr {{.*}} <col:8> noreturn
+// CHECK: | |-CXXConversionDecl {{.*}} <col:3, col:23> col:3{{( imported)?}} implicit constexpr operator auto (*)() 'auto (*() const noexcept)()' inline
+// CHECK: | `-CXXMethodDecl {{.*}} <col:3, col:23> col:3{{( imported)?}} implicit __invoke 'auto ()' static inline
+// CHECK: `-CompoundStmt {{.*}} <col:22, col:23>
diff --git a/clang/test/AST/ast-dump-lookups.cpp b/clang/test/AST/ast-dump-lookups.cpp
index 58f31ac4a3a6d..0aff4cd344608 100644
--- a/clang/test/AST/ast-dump-lookups.cpp
+++ b/clang/test/AST/ast-dump-lookups.cpp
@@ -14,10 +14,10 @@ namespace Test {
// PRAGMA: lookup results for Test:
// PRAGMA-NEXT: NamespaceDecl {{.*}} Test
// PRAGMA-NEXT: |-TypedefDecl {{.*}} T 'int'
-// PRAGMA-NEXT: | `-BuiltinType {{.*}} 'int'
+// PRAGMA-NEXT: | `-typeDetails: BuiltinType {{.*}} 'int'
// PRAGMA-NEXT: |-VarDecl [[EXTERN_A:0x[^ ]*]] {{.*}} a 'int' extern
-// PRAGMA-NEXT: `-VarDecl {{.*}} prev [[EXTERN_A]] {{.*}} a 'int' cinit
-// PRAGMA-NEXT: `-IntegerLiteral {{.*}} 'int' 0
+// PRAGMA: `-VarDecl {{.*}} prev [[EXTERN_A]] {{.*}} a 'int' cinit
+// PRAGMA: |-IntegerLiteral {{.*}} 'int' 0
#endif
namespace Test { }
@@ -25,10 +25,10 @@ namespace Test { }
// DECLS: Dumping Test:
// DECLS-NEXT: NamespaceDecl {{.*}} Test
// DECLS-NEXT: |-TypedefDecl {{.*}} T 'int'
-// DECLS-NEXT: | `-BuiltinType {{.*}} 'int'
+// DECLS-NEXT: | `-typeDetails: BuiltinType {{.*}} 'int'
// DECLS-NEXT: |-VarDecl [[EXTERN_A:0x[^ ]*]] {{.*}} a 'int' extern
-// DECLS-NEXT: `-VarDecl {{.*}} prev [[EXTERN_A]] {{.*}} a 'int' cinit
-// DECLS-NEXT: `-IntegerLiteral {{.*}} 'int' 0
+// DECLS: `-VarDecl {{.*}} prev [[EXTERN_A]] {{.*}} a 'int' cinit
+// DECLS: |-IntegerLiteral {{.*}} 'int' 0
//
// DECLS: Dumping Test:
// DECLS-NEXT: NamespaceDecl {{.*}} Test
@@ -46,8 +46,8 @@ namespace Test { }
// DECLS-LOOKUPS: -DeclarationName 'a'
// DECLS-LOOKUPS-NEXT: `-Var [[A:[^ ]*]] 'a' 'int'
// DECLS-LOOKUPS-NEXT: |-VarDecl [[EXTERN_A:0x[^ ]*]] {{.*}} a 'int' extern
-// DECLS-LOOKUPS-NEXT: `-VarDecl [[A]] prev [[EXTERN_A]] {{.*}} a 'int' cinit
-// DECLS-LOOKUPS-NEXT: `-IntegerLiteral {{.*}} 'int' 0
+// DECLS-LOOKUPS: `-VarDecl [[A]] prev [[EXTERN_A]] {{.*}} a 'int' cinit
+// DECLS-LOOKUPS-NEXT: |-IntegerLiteral {{.*}} 'int' 0
//
// DECLS-LOOKUPS: Dumping Test:
// DECLS-LOOKUPS-NEXT: Lookup map is in primary DeclContext
diff --git a/clang/test/AST/ast-dump-managed-var.cu b/clang/test/AST/ast-dump-managed-var.cu
index 862a70c81f9e9..849311ba23996 100644
--- a/clang/test/AST/ast-dump-managed-var.cu
+++ b/clang/test/AST/ast-dump-managed-var.cu
@@ -4,25 +4,25 @@
#include "Inputs/cuda.h"
// CHECK-LABEL: VarDecl {{.*}} m1 'int'
-// CHECK-NEXT: HIPManagedAttr
+// CHECK: HIPManagedAttr
// CHECK-NEXT: CUDADeviceAttr {{.*}}Implicit
__managed__ int m1;
// CHECK-LABEL: VarDecl {{.*}} m2 'int'
-// CHECK-NEXT: HIPManagedAttr
+// CHECK: HIPManagedAttr
// CHECK-NEXT: CUDADeviceAttr {{.*}}Implicit
// CHECK-NOT: HIPManagedAttr
// CHECK-NOT: CUDADeviceAttr
__managed__ __managed__ int m2;
// CHECK-LABEL: VarDecl {{.*}} m3 'int'
-// CHECK-NEXT: HIPManagedAttr
+// CHECK: HIPManagedAttr
// CHECK-NEXT: CUDADeviceAttr {{.*}}line
// CHECK-NOT: CUDADeviceAttr {{.*}}Implicit
__managed__ __device__ int m3;
// CHECK-LABEL: VarDecl {{.*}} m3a 'int'
-// CHECK-NEXT: CUDADeviceAttr {{.*}}cuda.h
+// CHECK: CUDADeviceAttr {{.*}}cuda.h
// CHECK-NEXT: HIPManagedAttr
// CHECK-NOT: CUDADeviceAttr {{.*}}Implicit
__device__ __managed__ int m3a;
diff --git a/clang/test/AST/ast-dump-msp430-attr.c b/clang/test/AST/ast-dump-msp430-attr.c
index f228cd8dbdb85..c182afb114427 100644
--- a/clang/test/AST/ast-dump-msp430-attr.c
+++ b/clang/test/AST/ast-dump-msp430-attr.c
@@ -10,4 +10,4 @@
__attribute__((interrupt(12))) void Test(void);
// CHECK: FunctionDecl{{.*}}Test
-// CHECK-NEXT: MSP430InterruptAttr
+// CHECK-NEXT: attrDetails: MSP430InterruptAttr
diff --git a/clang/test/AST/ast-dump-openmp-atomic.c b/clang/test/AST/ast-dump-openmp-atomic.c
index 2bd9f558b749a..8d81ade32ab19 100644
--- a/clang/test/AST/ast-dump-openmp-atomic.c
+++ b/clang/test/AST/ast-dump-openmp-atomic.c
@@ -8,7 +8,7 @@ void test(int i) {
// CHECK: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>
// CHECK: `-FunctionDecl {{.*}} <{{.*}}ast-dump-openmp-atomic.c:3:1, line:6:1> line:3:6 test 'void (int)'
// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:11, col:15> col:15 used i 'int'
-// CHECK-NEXT: `-CompoundStmt {{.*}} <col:18, line:6:1>
+// CHECK: `-CompoundStmt {{.*}} <col:18, line:6:1>
// CHECK-NEXT: `-OMPAtomicDirective {{.*}} <line:4:1, col:19>
// CHECK-NEXT: `-UnaryOperator {{.*}} <line:5:3, col:5> 'int' prefix '++'
// CHECK-NEXT: `-DeclRefExpr {{.*}} <col:5> 'int' lvalue ParmVar {{.*}} 'i' 'int'
diff --git a/clang/test/AST/ast-dump-openmp-begin-declare-variant-varying-return.c b/clang/test/AST/ast-dump-openmp-begin-declare-variant-varying-return.c
index 5c7ff8d751879..8d4618c7ae73a 100644
--- a/clang/test/AST/ast-dump-openmp-begin-declare-variant-varying-return.c
+++ b/clang/test/AST/ast-dump-openmp-begin-declare-variant-varying-return.c
@@ -77,51 +77,51 @@ int main(void) {
// C_FLOAT-NEXT: | | `-ReturnStmt [[ADDR_2:0x[a-z0-9]*]] <line:29:3, line:15:34>
// C_FLOAT-NEXT: | | `-ImplicitCastExpr [[ADDR_3:0x[a-z0-9]*]] <col:34> 'float' <IntegralToFloating>
// C_FLOAT-NEXT: | | `-IntegerLiteral [[ADDR_4:0x[a-z0-9]*]] <col:34> 'int' 0
-// C_FLOAT-NEXT: | `-OverloadableAttr [[ADDR_5:0x[a-z0-9]*]] <line:10:37>
+// C_FLOAT-NEXT: | `-attrDetails: OverloadableAttr [[ADDR_5:0x[a-z0-9]*]] <line:10:37>
// C_FLOAT-NEXT: |-FunctionDecl [[ADDR_6:0x[a-z0-9]*]] <col:22, line:34:1> line:32:11 used also_before 'float (int)'
// C_FLOAT-NEXT: | |-ParmVarDecl [[ADDR_7:0x[a-z0-9]*]] <col:23, col:27> col:27 i 'int'
-// C_FLOAT-NEXT: | |-CompoundStmt [[ADDR_8:0x[a-z0-9]*]] <col:30, line:34:1>
+// C_FLOAT: | |-CompoundStmt [[ADDR_8:0x[a-z0-9]*]] <col:30, line:34:1>
// C_FLOAT-NEXT: | | `-ReturnStmt [[ADDR_9:0x[a-z0-9]*]] <line:33:3, line:15:34>
// C_FLOAT-NEXT: | | `-ImplicitCastExpr [[ADDR_10:0x[a-z0-9]*]] <col:34> 'float' <IntegralToFloating>
// C_FLOAT-NEXT: | | `-IntegerLiteral [[ADDR_11:0x[a-z0-9]*]] <col:34> 'int' 0
-// C_FLOAT-NEXT: | `-OverloadableAttr [[ADDR_12:0x[a-z0-9]*]] <line:10:37>
+// C_FLOAT-NEXT: | `-attrDetails: OverloadableAttr [[ADDR_12:0x[a-z0-9]*]] <line:10:37>
// C_FLOAT-NEXT: |-FunctionDecl [[ADDR_13:0x[a-z0-9]*]] <col:22, line:40:1> line:10:22 also_before[implementation={extension(disable_implicit_base)}] 'int ({{.*}})'
// C_FLOAT-NEXT: | |-CompoundStmt [[ADDR_14:0x[a-z0-9]*]] <line:38:23, line:40:1>
// C_FLOAT-NEXT: | | `-ReturnStmt [[ADDR_15:0x[a-z0-9]*]] <line:39:3, line:16:37>
// C_FLOAT-NEXT: | | `-IntegerLiteral [[ADDR_16:0x[a-z0-9]*]] <col:37> 'int' 1
-// C_FLOAT-NEXT: | `-OverloadableAttr [[ADDR_17:0x[a-z0-9]*]] <line:10:37>
+// C_FLOAT-NEXT: | `-attrDetails: OverloadableAttr [[ADDR_17:0x[a-z0-9]*]] <line:10:37>
// C_FLOAT-NEXT: |-FunctionDecl [[ADDR_18:0x[a-z0-9]*]] <col:22, line:44:1> line:10:22 also_before[implementation={extension(disable_implicit_base)}] 'int (int)'
// C_FLOAT-NEXT: | |-ParmVarDecl [[ADDR_19:0x[a-z0-9]*]] <line:42:17, col:21> col:21 i 'int'
-// C_FLOAT-NEXT: | |-CompoundStmt [[ADDR_20:0x[a-z0-9]*]] <col:24, line:44:1>
+// C_FLOAT: | |-CompoundStmt [[ADDR_20:0x[a-z0-9]*]] <col:24, line:44:1>
// C_FLOAT-NEXT: | | `-ReturnStmt [[ADDR_21:0x[a-z0-9]*]] <line:43:3, line:16:37>
// C_FLOAT-NEXT: | | `-IntegerLiteral [[ADDR_22:0x[a-z0-9]*]] <col:37> 'int' 1
-// C_FLOAT-NEXT: | `-OverloadableAttr [[ADDR_23:0x[a-z0-9]*]] <line:10:37>
+// C_FLOAT-NEXT: | `-attrDetails: OverloadableAttr [[ADDR_23:0x[a-z0-9]*]] <line:10:37>
// C_FLOAT-NEXT: |-FunctionDecl [[ADDR_24:0x[a-z0-9]*]] <col:22, line:49:1> line:10:22 also_after[implementation={extension(disable_implicit_base)}] 'int (double)'
// C_FLOAT-NEXT: | |-ParmVarDecl [[ADDR_25:0x[a-z0-9]*]] <line:47:16, col:23> col:23 d 'double'
-// C_FLOAT-NEXT: | |-CompoundStmt [[ADDR_26:0x[a-z0-9]*]] <col:26, line:49:1>
+// C_FLOAT: | |-CompoundStmt [[ADDR_26:0x[a-z0-9]*]] <col:26, line:49:1>
// C_FLOAT-NEXT: | | `-ReturnStmt [[ADDR_27:0x[a-z0-9]*]] <line:48:3, line:18:37>
// C_FLOAT-NEXT: | | `-IntegerLiteral [[ADDR_28:0x[a-z0-9]*]] <col:37> 'int' 0
-// C_FLOAT-NEXT: | `-OverloadableAttr [[ADDR_29:0x[a-z0-9]*]] <line:10:37>
+// C_FLOAT-NEXT: | `-attrDetails: OverloadableAttr [[ADDR_29:0x[a-z0-9]*]] <line:10:37>
// C_FLOAT-NEXT: |-FunctionDecl [[ADDR_30:0x[a-z0-9]*]] <col:22, line:53:1> line:10:22 also_after[implementation={extension(disable_implicit_base)}] 'int (long)'
// C_FLOAT-NEXT: | |-ParmVarDecl [[ADDR_31:0x[a-z0-9]*]] <line:51:16, col:21> col:21 l 'long'
-// C_FLOAT-NEXT: | |-CompoundStmt [[ADDR_32:0x[a-z0-9]*]] <col:24, line:53:1>
+// C_FLOAT: | |-CompoundStmt [[ADDR_32:0x[a-z0-9]*]] <col:24, line:53:1>
// C_FLOAT-NEXT: | | `-ReturnStmt [[ADDR_33:0x[a-z0-9]*]] <line:52:3, line:18:37>
// C_FLOAT-NEXT: | | `-IntegerLiteral [[ADDR_34:0x[a-z0-9]*]] <col:37> 'int' 0
-// C_FLOAT-NEXT: | `-OverloadableAttr [[ADDR_35:0x[a-z0-9]*]] <line:10:37>
+// C_FLOAT-NEXT: | `-attrDetails: OverloadableAttr [[ADDR_35:0x[a-z0-9]*]] <line:10:37>
// C_FLOAT-NEXT: |-FunctionDecl [[ADDR_36:0x[a-z0-9]*]] <col:22, line:59:1> line:57:11 used also_after 'float (double)'
// C_FLOAT-NEXT: | |-ParmVarDecl [[ADDR_37:0x[a-z0-9]*]] <col:22, col:29> col:29 d 'double'
-// C_FLOAT-NEXT: | |-CompoundStmt [[ADDR_38:0x[a-z0-9]*]] <col:32, line:59:1>
+// C_FLOAT: | |-CompoundStmt [[ADDR_38:0x[a-z0-9]*]] <col:32, line:59:1>
// C_FLOAT-NEXT: | | `-ReturnStmt [[ADDR_39:0x[a-z0-9]*]] <line:58:3, line:17:34>
// C_FLOAT-NEXT: | | `-ImplicitCastExpr [[ADDR_40:0x[a-z0-9]*]] <col:34> 'float' <IntegralToFloating>
// C_FLOAT-NEXT: | | `-IntegerLiteral [[ADDR_41:0x[a-z0-9]*]] <col:34> 'int' 1
-// C_FLOAT-NEXT: | `-OverloadableAttr [[ADDR_42:0x[a-z0-9]*]] <line:10:37>
+// C_FLOAT-NEXT: | `-attrDetails: OverloadableAttr [[ADDR_42:0x[a-z0-9]*]] <line:10:37>
// C_FLOAT-NEXT: |-FunctionDecl [[ADDR_43:0x[a-z0-9]*]] <col:22, line:63:1> line:61:11 used also_after 'float (long)'
// C_FLOAT-NEXT: | |-ParmVarDecl [[ADDR_44:0x[a-z0-9]*]] <col:22, col:27> col:27 l 'long'
-// C_FLOAT-NEXT: | |-CompoundStmt [[ADDR_45:0x[a-z0-9]*]] <col:30, line:63:1>
+// C_FLOAT: | |-CompoundStmt [[ADDR_45:0x[a-z0-9]*]] <col:30, line:63:1>
// C_FLOAT-NEXT: | | `-ReturnStmt [[ADDR_46:0x[a-z0-9]*]] <line:62:3, line:17:34>
// C_FLOAT-NEXT: | | `-ImplicitCastExpr [[ADDR_47:0x[a-z0-9]*]] <col:34> 'float' <IntegralToFloating>
// C_FLOAT-NEXT: | | `-IntegerLiteral [[ADDR_48:0x[a-z0-9]*]] <col:34> 'int' 1
-// C_FLOAT-NEXT: | `-OverloadableAttr [[ADDR_49:0x[a-z0-9]*]] <line:10:37>
+// C_FLOAT-NEXT: | `-attrDetails: OverloadableAttr [[ADDR_49:0x[a-z0-9]*]] <line:10:37>
// C_FLOAT-NEXT: `-FunctionDecl [[ADDR_50:0x[a-z0-9]*]] <line:65:1, line:68:1> line:65:5 main 'int ({{.*}})'
// C_FLOAT-NEXT: `-CompoundStmt [[ADDR_51:0x[a-z0-9]*]] <col:16, line:68:1>
// C_FLOAT-NEXT: `-ReturnStmt [[ADDR_52:0x[a-z0-9]*]] <line:67:3, col:94>
@@ -158,7 +158,7 @@ int main(void) {
// CXX_FLOAT-NEXT: | `-IntegerLiteral [[ADDR_4:0x[a-z0-9]*]] <col:34> 'int' 0
// CXX_FLOAT-NEXT: |-FunctionDecl [[ADDR_5:0x[a-z0-9]*]] <line:14:19, line:34:1> line:32:11 used also_before 'float (int)'
// CXX_FLOAT-NEXT: | |-ParmVarDecl [[ADDR_6:0x[a-z0-9]*]] <col:23, col:27> col:27 i 'int'
-// CXX_FLOAT-NEXT: | `-CompoundStmt [[ADDR_7:0x[a-z0-9]*]] <col:30, line:34:1>
+// CXX_FLOAT: | `-CompoundStmt [[ADDR_7:0x[a-z0-9]*]] <col:30, line:34:1>
// CXX_FLOAT-NEXT: | `-ReturnStmt [[ADDR_8:0x[a-z0-9]*]] <line:33:3, line:15:34>
// CXX_FLOAT-NEXT: | `-ImplicitCastExpr [[ADDR_9:0x[a-z0-9]*]] <col:34> 'float' <IntegralToFloating>
// CXX_FLOAT-NEXT: | `-IntegerLiteral [[ADDR_10:0x[a-z0-9]*]] <col:34> 'int' 0
@@ -168,28 +168,28 @@ int main(void) {
// CXX_FLOAT-NEXT: | `-IntegerLiteral [[ADDR_14:0x[a-z0-9]*]] <col:37> 'int' 1
// CXX_FLOAT-NEXT: |-FunctionDecl [[ADDR_15:0x[a-z0-9]*]] <line:42:1, line:44:1> line:42:1 also_before[implementation={extension(disable_implicit_base)}] 'int (int)'
// CXX_FLOAT-NEXT: | |-ParmVarDecl [[ADDR_16:0x[a-z0-9]*]] <col:17, col:21> col:21 i 'int'
-// CXX_FLOAT-NEXT: | `-CompoundStmt [[ADDR_17:0x[a-z0-9]*]] <col:24, line:44:1>
+// CXX_FLOAT: | `-CompoundStmt [[ADDR_17:0x[a-z0-9]*]] <col:24, line:44:1>
// CXX_FLOAT-NEXT: | `-ReturnStmt [[ADDR_18:0x[a-z0-9]*]] <line:43:3, line:16:37>
// CXX_FLOAT-NEXT: | `-IntegerLiteral [[ADDR_19:0x[a-z0-9]*]] <col:37> 'int' 1
// CXX_FLOAT-NEXT: |-FunctionDecl [[ADDR_20:0x[a-z0-9]*]] <line:47:1, line:49:1> line:47:1 also_after[implementation={extension(disable_implicit_base)}] 'int (double)'
// CXX_FLOAT-NEXT: | |-ParmVarDecl [[ADDR_21:0x[a-z0-9]*]] <col:16, col:23> col:23 d 'double'
-// CXX_FLOAT-NEXT: | `-CompoundStmt [[ADDR_22:0x[a-z0-9]*]] <col:26, line:49:1>
+// CXX_FLOAT: | `-CompoundStmt [[ADDR_22:0x[a-z0-9]*]] <col:26, line:49:1>
// CXX_FLOAT-NEXT: | `-ReturnStmt [[ADDR_23:0x[a-z0-9]*]] <line:48:3, line:18:37>
// CXX_FLOAT-NEXT: | `-IntegerLiteral [[ADDR_24:0x[a-z0-9]*]] <col:37> 'int' 0
// CXX_FLOAT-NEXT: |-FunctionDecl [[ADDR_25:0x[a-z0-9]*]] <line:51:1, line:53:1> line:51:1 also_after[implementation={extension(disable_implicit_base)}] 'int (long)'
// CXX_FLOAT-NEXT: | |-ParmVarDecl [[ADDR_26:0x[a-z0-9]*]] <col:16, col:21> col:21 l 'long'
-// CXX_FLOAT-NEXT: | `-CompoundStmt [[ADDR_27:0x[a-z0-9]*]] <col:24, line:53:1>
+// CXX_FLOAT: | `-CompoundStmt [[ADDR_27:0x[a-z0-9]*]] <col:24, line:53:1>
// CXX_FLOAT-NEXT: | `-ReturnStmt [[ADDR_28:0x[a-z0-9]*]] <line:52:3, line:18:37>
// CXX_FLOAT-NEXT: | `-IntegerLiteral [[ADDR_29:0x[a-z0-9]*]] <col:37> 'int' 0
// CXX_FLOAT-NEXT: |-FunctionDecl [[ADDR_30:0x[a-z0-9]*]] <line:14:19, line:59:1> line:57:11 used also_after 'float (double)'
// CXX_FLOAT-NEXT: | |-ParmVarDecl [[ADDR_31:0x[a-z0-9]*]] <col:22, col:29> col:29 d 'double'
-// CXX_FLOAT-NEXT: | `-CompoundStmt [[ADDR_32:0x[a-z0-9]*]] <col:32, line:59:1>
+// CXX_FLOAT: | `-CompoundStmt [[ADDR_32:0x[a-z0-9]*]] <col:32, line:59:1>
// CXX_FLOAT-NEXT: | `-ReturnStmt [[ADDR_33:0x[a-z0-9]*]] <line:58:3, line:17:34>
// CXX_FLOAT-NEXT: | `-ImplicitCastExpr [[ADDR_34:0x[a-z0-9]*]] <col:34> 'float' <IntegralToFloating>
// CXX_FLOAT-NEXT: | `-IntegerLiteral [[ADDR_35:0x[a-z0-9]*]] <col:34> 'int' 1
// CXX_FLOAT-NEXT: |-FunctionDecl [[ADDR_36:0x[a-z0-9]*]] <line:14:19, line:63:1> line:61:11 used also_after 'float (long)'
// CXX_FLOAT-NEXT: | |-ParmVarDecl [[ADDR_37:0x[a-z0-9]*]] <col:22, col:27> col:27 l 'long'
-// CXX_FLOAT-NEXT: | `-CompoundStmt [[ADDR_38:0x[a-z0-9]*]] <col:30, line:63:1>
+// CXX_FLOAT: | `-CompoundStmt [[ADDR_38:0x[a-z0-9]*]] <col:30, line:63:1>
// CXX_FLOAT-NEXT: | `-ReturnStmt [[ADDR_39:0x[a-z0-9]*]] <line:62:3, line:17:34>
// CXX_FLOAT-NEXT: | `-ImplicitCastExpr [[ADDR_40:0x[a-z0-9]*]] <col:34> 'float' <IntegralToFloating>
// CXX_FLOAT-NEXT: | `-IntegerLiteral [[ADDR_41:0x[a-z0-9]*]] <col:34> 'int' 1
@@ -226,52 +226,52 @@ int main(void) {
// C_INT-NEXT: | |-CompoundStmt [[ADDR_1:0x[a-z0-9]*]] <col:29, line:30:1>
// C_INT-NEXT: | | `-ReturnStmt [[ADDR_2:0x[a-z0-9]*]] <line:29:3, line:21:34>
// C_INT-NEXT: | | `-IntegerLiteral [[ADDR_3:0x[a-z0-9]*]] <col:34> 'int' 1
-// C_INT-NEXT: | |-OverloadableAttr [[ADDR_4:0x[a-z0-9]*]] <line:10:37>
-// C_INT-NEXT: | `-OMPDeclareVariantAttr [[ADDR_5:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(disable_implicit_base)}
+// C_INT-NEXT: | |-attrDetails: OverloadableAttr [[ADDR_4:0x[a-z0-9]*]] <line:10:37>
+// C_INT-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_5:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(disable_implicit_base)}
// C_INT-NEXT: | `-DeclRefExpr [[ADDR_6:0x[a-z0-9]*]] <col:22> 'int ({{.*}})' Function [[ADDR_7:0x[a-z0-9]*]] 'also_before[implementation={extension(disable_implicit_base)}]' 'int ({{.*}})'
// C_INT-NEXT: |-FunctionDecl [[ADDR_8:0x[a-z0-9]*]] <col:22, line:34:1> line:32:11 used also_before 'int (int)'
// C_INT-NEXT: | |-ParmVarDecl [[ADDR_9:0x[a-z0-9]*]] <col:23, col:27> col:27 i 'int'
-// C_INT-NEXT: | |-CompoundStmt [[ADDR_10:0x[a-z0-9]*]] <col:30, line:34:1>
+// C_INT: | |-CompoundStmt [[ADDR_10:0x[a-z0-9]*]] <col:30, line:34:1>
// C_INT-NEXT: | | `-ReturnStmt [[ADDR_11:0x[a-z0-9]*]] <line:33:3, line:21:34>
// C_INT-NEXT: | | `-IntegerLiteral [[ADDR_12:0x[a-z0-9]*]] <col:34> 'int' 1
-// C_INT-NEXT: | |-OverloadableAttr [[ADDR_13:0x[a-z0-9]*]] <line:10:37>
-// C_INT-NEXT: | `-OMPDeclareVariantAttr [[ADDR_14:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(disable_implicit_base)}
+// C_INT-NEXT: | |-attrDetails: OverloadableAttr [[ADDR_13:0x[a-z0-9]*]] <line:10:37>
+// C_INT-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_14:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(disable_implicit_base)}
// C_INT-NEXT: | `-DeclRefExpr [[ADDR_15:0x[a-z0-9]*]] <col:22> 'int (int)' Function [[ADDR_16:0x[a-z0-9]*]] 'also_before[implementation={extension(disable_implicit_base)}]' 'int (int)'
// C_INT-NEXT: |-FunctionDecl [[ADDR_7]] <col:22, line:40:1> line:10:22 also_before[implementation={extension(disable_implicit_base)}] 'int ({{.*}})'
// C_INT-NEXT: | |-CompoundStmt [[ADDR_17:0x[a-z0-9]*]] <line:38:23, line:40:1>
// C_INT-NEXT: | | `-ReturnStmt [[ADDR_18:0x[a-z0-9]*]] <line:39:3, line:22:37>
// C_INT-NEXT: | | `-IntegerLiteral [[ADDR_19:0x[a-z0-9]*]] <col:37> 'int' 0
-// C_INT-NEXT: | `-OverloadableAttr [[ADDR_20:0x[a-z0-9]*]] <line:10:37>
+// C_INT-NEXT: | `-attrDetails: OverloadableAttr [[ADDR_20:0x[a-z0-9]*]] <line:10:37>
// C_INT-NEXT: |-FunctionDecl [[ADDR_16]] <col:22, line:44:1> line:10:22 also_before[implementation={extension(disable_implicit_base)}] 'int (int)'
// C_INT-NEXT: | |-ParmVarDecl [[ADDR_21:0x[a-z0-9]*]] <line:42:17, col:21> col:21 i 'int'
-// C_INT-NEXT: | |-CompoundStmt [[ADDR_22:0x[a-z0-9]*]] <col:24, line:44:1>
+// C_INT: | |-CompoundStmt [[ADDR_22:0x[a-z0-9]*]] <col:24, line:44:1>
// C_INT-NEXT: | | `-ReturnStmt [[ADDR_23:0x[a-z0-9]*]] <line:43:3, line:22:37>
// C_INT-NEXT: | | `-IntegerLiteral [[ADDR_24:0x[a-z0-9]*]] <col:37> 'int' 0
-// C_INT-NEXT: | `-OverloadableAttr [[ADDR_25:0x[a-z0-9]*]] <line:10:37>
+// C_INT-NEXT: | `-attrDetails: OverloadableAttr [[ADDR_25:0x[a-z0-9]*]] <line:10:37>
// C_INT-NEXT: |-FunctionDecl [[ADDR_26:0x[a-z0-9]*]] <col:22, line:49:1> line:10:22 also_after[implementation={extension(disable_implicit_base)}] 'int (double)'
// C_INT-NEXT: | |-ParmVarDecl [[ADDR_27:0x[a-z0-9]*]] <line:47:16, col:23> col:23 d 'double'
-// C_INT-NEXT: | |-CompoundStmt [[ADDR_28:0x[a-z0-9]*]] <col:26, line:49:1>
+// C_INT: | |-CompoundStmt [[ADDR_28:0x[a-z0-9]*]] <col:26, line:49:1>
// C_INT-NEXT: | | `-ReturnStmt [[ADDR_29:0x[a-z0-9]*]] <line:48:3, line:24:37>
// C_INT-NEXT: | | `-IntegerLiteral [[ADDR_30:0x[a-z0-9]*]] <col:37> 'int' 1
-// C_INT-NEXT: | `-OverloadableAttr [[ADDR_31:0x[a-z0-9]*]] <line:10:37>
+// C_INT-NEXT: | `-attrDetails: OverloadableAttr [[ADDR_31:0x[a-z0-9]*]] <line:10:37>
// C_INT-NEXT: |-FunctionDecl [[ADDR_32:0x[a-z0-9]*]] <col:22, line:53:1> line:10:22 also_after[implementation={extension(disable_implicit_base)}] 'int (long)'
// C_INT-NEXT: | |-ParmVarDecl [[ADDR_33:0x[a-z0-9]*]] <line:51:16, col:21> col:21 l 'long'
-// C_INT-NEXT: | |-CompoundStmt [[ADDR_34:0x[a-z0-9]*]] <col:24, line:53:1>
+// C_INT: | |-CompoundStmt [[ADDR_34:0x[a-z0-9]*]] <col:24, line:53:1>
// C_INT-NEXT: | | `-ReturnStmt [[ADDR_35:0x[a-z0-9]*]] <line:52:3, line:24:37>
// C_INT-NEXT: | | `-IntegerLiteral [[ADDR_36:0x[a-z0-9]*]] <col:37> 'int' 1
-// C_INT-NEXT: | `-OverloadableAttr [[ADDR_37:0x[a-z0-9]*]] <line:10:37>
+// C_INT-NEXT: | `-attrDetails: OverloadableAttr [[ADDR_37:0x[a-z0-9]*]] <line:10:37>
// C_INT-NEXT: |-FunctionDecl [[ADDR_38:0x[a-z0-9]*]] <col:22, line:59:1> line:57:11 used also_after 'int (double)'
// C_INT-NEXT: | |-ParmVarDecl [[ADDR_39:0x[a-z0-9]*]] <col:22, col:29> col:29 d 'double'
-// C_INT-NEXT: | |-CompoundStmt [[ADDR_40:0x[a-z0-9]*]] <col:32, line:59:1>
+// C_INT: | |-CompoundStmt [[ADDR_40:0x[a-z0-9]*]] <col:32, line:59:1>
// C_INT-NEXT: | | `-ReturnStmt [[ADDR_41:0x[a-z0-9]*]] <line:58:3, line:23:34>
// C_INT-NEXT: | | `-IntegerLiteral [[ADDR_42:0x[a-z0-9]*]] <col:34> 'int' 0
-// C_INT-NEXT: | `-OverloadableAttr [[ADDR_43:0x[a-z0-9]*]] <line:10:37>
+// C_INT-NEXT: | `-attrDetails: OverloadableAttr [[ADDR_43:0x[a-z0-9]*]] <line:10:37>
// C_INT-NEXT: |-FunctionDecl [[ADDR_44:0x[a-z0-9]*]] <col:22, line:63:1> line:61:11 used also_after 'int (long)'
// C_INT-NEXT: | |-ParmVarDecl [[ADDR_45:0x[a-z0-9]*]] <col:22, col:27> col:27 l 'long'
-// C_INT-NEXT: | |-CompoundStmt [[ADDR_46:0x[a-z0-9]*]] <col:30, line:63:1>
+// C_INT: | |-CompoundStmt [[ADDR_46:0x[a-z0-9]*]] <col:30, line:63:1>
// C_INT-NEXT: | | `-ReturnStmt [[ADDR_47:0x[a-z0-9]*]] <line:62:3, line:23:34>
// C_INT-NEXT: | | `-IntegerLiteral [[ADDR_48:0x[a-z0-9]*]] <col:34> 'int' 0
-// C_INT-NEXT: | `-OverloadableAttr [[ADDR_49:0x[a-z0-9]*]] <line:10:37>
+// C_INT-NEXT: | `-attrDetails: OverloadableAttr [[ADDR_49:0x[a-z0-9]*]] <line:10:37>
// C_INT-NEXT: `-FunctionDecl [[ADDR_50:0x[a-z0-9]*]] <line:65:1, line:68:1> line:65:5 main 'int ({{.*}})'
// C_INT-NEXT: `-CompoundStmt [[ADDR_51:0x[a-z0-9]*]] <col:16, line:68:1>
// C_INT-NEXT: `-ReturnStmt [[ADDR_52:0x[a-z0-9]*]] <line:67:3, col:94>
@@ -319,14 +319,14 @@ int main(void) {
// CXX_INT-NEXT: | |-CompoundStmt [[ADDR_1:0x[a-z0-9]*]] <col:29, line:30:1>
// CXX_INT-NEXT: | | `-ReturnStmt [[ADDR_2:0x[a-z0-9]*]] <line:29:3, line:21:34>
// CXX_INT-NEXT: | | `-IntegerLiteral [[ADDR_3:0x[a-z0-9]*]] <col:34> 'int' 1
-// CXX_INT-NEXT: | `-OMPDeclareVariantAttr [[ADDR_4:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(disable_implicit_base)}
+// CXX_INT-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_4:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(disable_implicit_base)}
// CXX_INT-NEXT: | `-DeclRefExpr [[ADDR_5:0x[a-z0-9]*]] <line:38:1> 'int ({{.*}})' Function [[ADDR_6:0x[a-z0-9]*]] 'also_before[implementation={extension(disable_implicit_base)}]' 'int ({{.*}})'
// CXX_INT-NEXT: |-FunctionDecl [[ADDR_7:0x[a-z0-9]*]] <line:20:19, line:34:1> line:32:11 used also_before 'int (int)'
// CXX_INT-NEXT: | |-ParmVarDecl [[ADDR_8:0x[a-z0-9]*]] <col:23, col:27> col:27 i 'int'
-// CXX_INT-NEXT: | |-CompoundStmt [[ADDR_9:0x[a-z0-9]*]] <col:30, line:34:1>
+// CXX_INT: | |-CompoundStmt [[ADDR_9:0x[a-z0-9]*]] <col:30, line:34:1>
// CXX_INT-NEXT: | | `-ReturnStmt [[ADDR_10:0x[a-z0-9]*]] <line:33:3, line:21:34>
// CXX_INT-NEXT: | | `-IntegerLiteral [[ADDR_11:0x[a-z0-9]*]] <col:34> 'int' 1
-// CXX_INT-NEXT: | `-OMPDeclareVariantAttr [[ADDR_12:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(disable_implicit_base)}
+// CXX_INT-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_12:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(disable_implicit_base)}
// CXX_INT-NEXT: | `-DeclRefExpr [[ADDR_13:0x[a-z0-9]*]] <line:42:1> 'int (int)' Function [[ADDR_14:0x[a-z0-9]*]] 'also_before[implementation={extension(disable_implicit_base)}]' 'int (int)'
// CXX_INT-NEXT: |-FunctionDecl [[ADDR_6]] <line:38:1, line:40:1> line:38:1 also_before[implementation={extension(disable_implicit_base)}] 'int ({{.*}})'
// CXX_INT-NEXT: | `-CompoundStmt [[ADDR_15:0x[a-z0-9]*]] <col:23, line:40:1>
@@ -334,27 +334,27 @@ int main(void) {
// CXX_INT-NEXT: | `-IntegerLiteral [[ADDR_17:0x[a-z0-9]*]] <col:37> 'int' 0
// CXX_INT-NEXT: |-FunctionDecl [[ADDR_14]] <line:42:1, line:44:1> line:42:1 also_before[implementation={extension(disable_implicit_base)}] 'int (int)'
// CXX_INT-NEXT: | |-ParmVarDecl [[ADDR_18:0x[a-z0-9]*]] <col:17, col:21> col:21 i 'int'
-// CXX_INT-NEXT: | `-CompoundStmt [[ADDR_19:0x[a-z0-9]*]] <col:24, line:44:1>
+// CXX_INT: | `-CompoundStmt [[ADDR_19:0x[a-z0-9]*]] <col:24, line:44:1>
// CXX_INT-NEXT: | `-ReturnStmt [[ADDR_20:0x[a-z0-9]*]] <line:43:3, line:22:37>
// CXX_INT-NEXT: | `-IntegerLiteral [[ADDR_21:0x[a-z0-9]*]] <col:37> 'int' 0
// CXX_INT-NEXT: |-FunctionDecl [[ADDR_22:0x[a-z0-9]*]] <line:47:1, line:49:1> line:47:1 also_after[implementation={extension(disable_implicit_base)}] 'int (double)'
// CXX_INT-NEXT: | |-ParmVarDecl [[ADDR_23:0x[a-z0-9]*]] <col:16, col:23> col:23 d 'double'
-// CXX_INT-NEXT: | `-CompoundStmt [[ADDR_24:0x[a-z0-9]*]] <col:26, line:49:1>
+// CXX_INT: | `-CompoundStmt [[ADDR_24:0x[a-z0-9]*]] <col:26, line:49:1>
// CXX_INT-NEXT: | `-ReturnStmt [[ADDR_25:0x[a-z0-9]*]] <line:48:3, line:24:37>
// CXX_INT-NEXT: | `-IntegerLiteral [[ADDR_26:0x[a-z0-9]*]] <col:37> 'int' 1
// CXX_INT-NEXT: |-FunctionDecl [[ADDR_27:0x[a-z0-9]*]] <line:51:1, line:53:1> line:51:1 also_after[implementation={extension(disable_implicit_base)}] 'int (long)'
// CXX_INT-NEXT: | |-ParmVarDecl [[ADDR_28:0x[a-z0-9]*]] <col:16, col:21> col:21 l 'long'
-// CXX_INT-NEXT: | `-CompoundStmt [[ADDR_29:0x[a-z0-9]*]] <col:24, line:53:1>
+// CXX_INT: | `-CompoundStmt [[ADDR_29:0x[a-z0-9]*]] <col:24, line:53:1>
// CXX_INT-NEXT: | `-ReturnStmt [[ADDR_30:0x[a-z0-9]*]] <line:52:3, line:24:37>
// CXX_INT-NEXT: | `-IntegerLiteral [[ADDR_31:0x[a-z0-9]*]] <col:37> 'int' 1
// CXX_INT-NEXT: |-FunctionDecl [[ADDR_32:0x[a-z0-9]*]] <line:20:19, line:59:1> line:57:11 used also_after 'int (double)'
// CXX_INT-NEXT: | |-ParmVarDecl [[ADDR_33:0x[a-z0-9]*]] <col:22, col:29> col:29 d 'double'
-// CXX_INT-NEXT: | `-CompoundStmt [[ADDR_34:0x[a-z0-9]*]] <col:32, line:59:1>
+// CXX_INT: | `-CompoundStmt [[ADDR_34:0x[a-z0-9]*]] <col:32, line:59:1>
// CXX_INT-NEXT: | `-ReturnStmt [[ADDR_35:0x[a-z0-9]*]] <line:58:3, line:23:34>
// CXX_INT-NEXT: | `-IntegerLiteral [[ADDR_36:0x[a-z0-9]*]] <col:34> 'int' 0
// CXX_INT-NEXT: |-FunctionDecl [[ADDR_37:0x[a-z0-9]*]] <line:20:19, line:63:1> line:61:11 used also_after 'int (long)'
// CXX_INT-NEXT: | |-ParmVarDecl [[ADDR_38:0x[a-z0-9]*]] <col:22, col:27> col:27 l 'long'
-// CXX_INT-NEXT: | `-CompoundStmt [[ADDR_39:0x[a-z0-9]*]] <col:30, line:63:1>
+// CXX_INT: | `-CompoundStmt [[ADDR_39:0x[a-z0-9]*]] <col:30, line:63:1>
// CXX_INT-NEXT: | `-ReturnStmt [[ADDR_40:0x[a-z0-9]*]] <line:62:3, line:23:34>
// CXX_INT-NEXT: | `-IntegerLiteral [[ADDR_41:0x[a-z0-9]*]] <col:34> 'int' 0
// CXX_INT-NEXT: `-FunctionDecl [[ADDR_42:0x[a-z0-9]*]] <line:65:1, line:68:1> line:65:5 main 'int ({{.*}})'
diff --git a/clang/test/AST/ast-dump-openmp-begin-declare-variant_10.c b/clang/test/AST/ast-dump-openmp-begin-declare-variant_10.c
index 07274ec67ef40..3b6c99248075f 100644
--- a/clang/test/AST/ast-dump-openmp-begin-declare-variant_10.c
+++ b/clang/test/AST/ast-dump-openmp-begin-declare-variant_10.c
@@ -50,31 +50,31 @@ int main(void) {
// C-NEXT: | |-CompoundStmt [[ADDR_1:0x[a-z0-9]*]] <col:24, line:13:1>
// C-NEXT: | | `-ReturnStmt [[ADDR_2:0x[a-z0-9]*]] <line:12:3, col:10>
// C-NEXT: | | `-IntegerLiteral [[ADDR_3:0x[a-z0-9]*]] <col:10> 'int' 1
-// C-NEXT: | `-OMPDeclareVariantAttr [[ADDR_4:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// C-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_4:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// C-NEXT: | `-DeclRefExpr [[ADDR_5:0x[a-z0-9]*]] <line:8:15> 'int ({{.*}})' Function [[ADDR_6:0x[a-z0-9]*]] 'also_before1[implementation={vendor(llvm)}]' 'int ({{.*}})'
// C-NEXT: |-FunctionDecl [[ADDR_7:0x[a-z0-9]*]] <line:14:1, line:16:1> line:14:5 used also_before2 'int ({{.*}})'
// C-NEXT: | |-CompoundStmt [[ADDR_8:0x[a-z0-9]*]] <col:24, line:16:1>
// C-NEXT: | | `-ReturnStmt [[ADDR_9:0x[a-z0-9]*]] <line:15:3, col:10>
// C-NEXT: | | `-IntegerLiteral [[ADDR_10:0x[a-z0-9]*]] <col:10> 'int' 2
-// C-NEXT: | `-OMPDeclareVariantAttr [[ADDR_11:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// C-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_11:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// C-NEXT: | `-DeclRefExpr [[ADDR_12:0x[a-z0-9]*]] <line:28:1> 'int ({{.*}})' Function [[ADDR_13:0x[a-z0-9]*]] 'also_before2[implementation={vendor(llvm)}]' 'int ({{.*}})'
// C-NEXT: |-FunctionDecl [[ADDR_14:0x[a-z0-9]*]] <line:17:1, line:19:1> line:17:5 used also_before3 'int ({{.*}})'
// C-NEXT: | |-CompoundStmt [[ADDR_15:0x[a-z0-9]*]] <col:24, line:19:1>
// C-NEXT: | | `-ReturnStmt [[ADDR_16:0x[a-z0-9]*]] <line:18:3, col:10>
// C-NEXT: | | `-IntegerLiteral [[ADDR_17:0x[a-z0-9]*]] <col:10> 'int' 3
-// C-NEXT: | `-OMPDeclareVariantAttr [[ADDR_18:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// C-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_18:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// C-NEXT: | `-DeclRefExpr [[ADDR_19:0x[a-z0-9]*]] <line:31:1> 'int ({{.*}})' Function [[ADDR_20:0x[a-z0-9]*]] 'also_before3[implementation={vendor(llvm)}]' 'int ({{.*}})'
// C-NEXT: |-FunctionDecl [[ADDR_21:0x[a-z0-9]*]] <line:20:1, line:22:1> line:20:5 used also_before4 'int ({{.*}})'
// C-NEXT: | |-CompoundStmt [[ADDR_22:0x[a-z0-9]*]] <col:24, line:22:1>
// C-NEXT: | | `-ReturnStmt [[ADDR_23:0x[a-z0-9]*]] <line:21:3, col:10>
// C-NEXT: | | `-IntegerLiteral [[ADDR_24:0x[a-z0-9]*]] <col:10> 'int' 4
-// C-NEXT: | `-OMPDeclareVariantAttr [[ADDR_25:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// C-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_25:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// C-NEXT: | `-DeclRefExpr [[ADDR_26:0x[a-z0-9]*]] <line:34:1> 'int ({{.*}})' Function [[ADDR_27:0x[a-z0-9]*]] 'also_before4[implementation={vendor(llvm)}]' 'int ({{.*}})'
// C-NEXT: |-FunctionDecl [[ADDR_6]] <line:8:15, line:27:1> line:8:15 also_before1[implementation={vendor(llvm)}] 'int ({{.*}})'
// C-NEXT: | |-CompoundStmt [[ADDR_28:0x[a-z0-9]*]] <line:25:30, line:27:1>
// C-NEXT: | | `-ReturnStmt [[ADDR_29:0x[a-z0-9]*]] <line:26:3, col:10>
// C-NEXT: | | `-IntegerLiteral [[ADDR_30:0x[a-z0-9]*]] <col:10> 'int' 0
-// C-NEXT: | `-ConstAttr [[ADDR_31:0x[a-z0-9]*]] <line:8:30>
+// C-NEXT: | `-attrDetails: ConstAttr [[ADDR_31:0x[a-z0-9]*]] <line:8:30>
// C-NEXT: |-FunctionDecl [[ADDR_13]] <line:28:1, line:30:1> line:28:1 also_before2[implementation={vendor(llvm)}] 'int ({{.*}})' static
// C-NEXT: | `-CompoundStmt [[ADDR_32:0x[a-z0-9]*]] <col:31, line:30:1>
// C-NEXT: | `-ReturnStmt [[ADDR_33:0x[a-z0-9]*]] <line:29:3, col:10>
@@ -83,14 +83,14 @@ int main(void) {
// C-NEXT: | |-CompoundStmt [[ADDR_35:0x[a-z0-9]*]] <col:49, line:33:1>
// C-NEXT: | | `-ReturnStmt [[ADDR_36:0x[a-z0-9]*]] <line:32:3, col:10>
// C-NEXT: | | `-IntegerLiteral [[ADDR_37:0x[a-z0-9]*]] <col:10> 'int' 0
-// C-NEXT: | `-NoThrowAttr [[ADDR_38:0x[a-z0-9]*]] <line:31:16>
+// C-NEXT: | `-attrDetails: NoThrowAttr [[ADDR_38:0x[a-z0-9]*]] <line:31:16>
// C-NEXT: |-FunctionDecl [[ADDR_27]] <line:34:1, line:36:1> line:34:1 also_before4[implementation={vendor(llvm)}] 'int ({{.*}})' static inline
// C-NEXT: | |-CompoundStmt [[ADDR_39:0x[a-z0-9]*]] <col:88, line:36:1>
// C-NEXT: | | `-ReturnStmt [[ADDR_40:0x[a-z0-9]*]] <line:35:3, col:10>
// C-NEXT: | | `-IntegerLiteral [[ADDR_41:0x[a-z0-9]*]] <col:10> 'int' 0
-// C-NEXT: | |-ConstAttr [[ADDR_42:0x[a-z0-9]*]] <line:8:30>
-// C-NEXT: | |-NoThrowAttr [[ADDR_43:0x[a-z0-9]*]] <line:34:29>
-// C-NEXT: | `-AlwaysInlineAttr [[ADDR_44:0x[a-z0-9]*]] <col:38> always_inline
+// C-NEXT: | |-attrDetails: ConstAttr [[ADDR_42:0x[a-z0-9]*]] <line:8:30>
+// C-NEXT: | |-attrDetails: NoThrowAttr [[ADDR_43:0x[a-z0-9]*]] <line:34:29>
+// C-NEXT: | `-attrDetails: AlwaysInlineAttr [[ADDR_44:0x[a-z0-9]*]] <col:38> always_inline
// C-NEXT: `-FunctionDecl [[ADDR_45:0x[a-z0-9]*]] <line:40:1, line:43:1> line:40:5 main 'int ({{.*}})'
// C-NEXT: `-CompoundStmt [[ADDR_46:0x[a-z0-9]*]] <col:16, line:43:1>
// C-NEXT: `-ReturnStmt [[ADDR_47:0x[a-z0-9]*]] <line:42:3, col:74>
@@ -130,25 +130,25 @@ int main(void) {
// CXX-NEXT: | |-CompoundStmt [[ADDR_1:0x[a-z0-9]*]] <col:24, line:13:1>
// CXX-NEXT: | | `-ReturnStmt [[ADDR_2:0x[a-z0-9]*]] <line:12:3, col:10>
// CXX-NEXT: | | `-IntegerLiteral [[ADDR_3:0x[a-z0-9]*]] <col:10> 'int' 1
-// CXX-NEXT: | `-OMPDeclareVariantAttr [[ADDR_4:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// CXX-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_4:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// CXX-NEXT: | `-DeclRefExpr [[ADDR_5:0x[a-z0-9]*]] <line:6:15> 'int ({{.*}})' Function [[ADDR_6:0x[a-z0-9]*]] 'also_before1[implementation={vendor(llvm)}]' 'int ({{.*}})'
// CXX-NEXT: |-FunctionDecl [[ADDR_7:0x[a-z0-9]*]] <line:14:1, line:16:1> line:14:5 used also_before2 'int ({{.*}})'
// CXX-NEXT: | |-CompoundStmt [[ADDR_8:0x[a-z0-9]*]] <col:24, line:16:1>
// CXX-NEXT: | | `-ReturnStmt [[ADDR_9:0x[a-z0-9]*]] <line:15:3, col:10>
// CXX-NEXT: | | `-IntegerLiteral [[ADDR_10:0x[a-z0-9]*]] <col:10> 'int' 2
-// CXX-NEXT: | `-OMPDeclareVariantAttr [[ADDR_11:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// CXX-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_11:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// CXX-NEXT: | `-DeclRefExpr [[ADDR_12:0x[a-z0-9]*]] <line:28:1> 'int ({{.*}})' Function [[ADDR_13:0x[a-z0-9]*]] 'also_before2[implementation={vendor(llvm)}]' 'int ({{.*}})'
// CXX-NEXT: |-FunctionDecl [[ADDR_14:0x[a-z0-9]*]] <line:17:1, line:19:1> line:17:5 used also_before3 'int ({{.*}})'
// CXX-NEXT: | |-CompoundStmt [[ADDR_15:0x[a-z0-9]*]] <col:24, line:19:1>
// CXX-NEXT: | | `-ReturnStmt [[ADDR_16:0x[a-z0-9]*]] <line:18:3, col:10>
// CXX-NEXT: | | `-IntegerLiteral [[ADDR_17:0x[a-z0-9]*]] <col:10> 'int' 3
-// CXX-NEXT: | `-OMPDeclareVariantAttr [[ADDR_18:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// CXX-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_18:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// CXX-NEXT: | `-DeclRefExpr [[ADDR_19:0x[a-z0-9]*]] <line:31:1> 'int ({{.*}}) __attribute__((nothrow))' Function [[ADDR_20:0x[a-z0-9]*]] 'also_before3[implementation={vendor(llvm)}]' 'int ({{.*}}) __attribute__((nothrow))'
// CXX-NEXT: |-FunctionDecl [[ADDR_21:0x[a-z0-9]*]] <line:20:1, line:22:1> line:20:5 used also_before4 'int ({{.*}})'
// CXX-NEXT: | |-CompoundStmt [[ADDR_22:0x[a-z0-9]*]] <col:24, line:22:1>
// CXX-NEXT: | | `-ReturnStmt [[ADDR_23:0x[a-z0-9]*]] <line:21:3, col:10>
// CXX-NEXT: | | `-IntegerLiteral [[ADDR_24:0x[a-z0-9]*]] <col:10> 'int' 4
-// CXX-NEXT: | `-OMPDeclareVariantAttr [[ADDR_25:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// CXX-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_25:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// CXX-NEXT: | `-DeclRefExpr [[ADDR_26:0x[a-z0-9]*]] <line:34:1> 'int ({{.*}}) __attribute__((nothrow))' Function [[ADDR_27:0x[a-z0-9]*]] 'also_before4[implementation={vendor(llvm)}]' 'int ({{.*}}) __attribute__((nothrow))'
// CXX-NEXT: |-FunctionDecl [[ADDR_6]] <line:6:15, line:27:1> line:6:15 constexpr also_before1[implementation={vendor(llvm)}] 'int ({{.*}})'
// CXX-NEXT: | `-CompoundStmt [[ADDR_28:0x[a-z0-9]*]] <line:25:30, line:27:1>
@@ -166,7 +166,7 @@ int main(void) {
// CXX-NEXT: | |-CompoundStmt [[ADDR_37:0x[a-z0-9]*]] <col:88, line:36:1>
// CXX-NEXT: | | `-ReturnStmt [[ADDR_38:0x[a-z0-9]*]] <line:35:3, col:10>
// CXX-NEXT: | | `-IntegerLiteral [[ADDR_39:0x[a-z0-9]*]] <col:10> 'int' 0
-// CXX-NEXT: | `-AlwaysInlineAttr [[ADDR_40:0x[a-z0-9]*]] <line:34:38> always_inline
+// CXX-NEXT: | `-attrDetails: AlwaysInlineAttr [[ADDR_40:0x[a-z0-9]*]] <line:34:38> always_inline
// CXX-NEXT: `-FunctionDecl [[ADDR_41:0x[a-z0-9]*]] <line:40:1, line:43:1> line:40:5 main 'int ({{.*}})'
// CXX-NEXT: `-CompoundStmt [[ADDR_42:0x[a-z0-9]*]] <col:16, line:43:1>
// CXX-NEXT: `-ReturnStmt [[ADDR_43:0x[a-z0-9]*]] <line:42:3, col:74>
diff --git a/clang/test/AST/ast-dump-openmp-begin-declare-variant_11.c b/clang/test/AST/ast-dump-openmp-begin-declare-variant_11.c
index 4c99f3311d8c3..11e828aa902f9 100644
--- a/clang/test/AST/ast-dump-openmp-begin-declare-variant_11.c
+++ b/clang/test/AST/ast-dump-openmp-begin-declare-variant_11.c
@@ -48,71 +48,71 @@ int main(void) {
// - we pick the right callees
// C: |-FunctionDecl [[ADDR_0:0x[a-z0-9]*]] <{{.*}}, line:13:27> col:11 implicit used also_after1 'int ({{.*}})'
-// C-NEXT: | |-ConstAttr [[ADDR_1:0x[a-z0-9]*]] <line:9:30>
-// C-NEXT: | `-OMPDeclareVariantAttr [[ADDR_2:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// C-NEXT: | |-attrDetails: ConstAttr [[ADDR_1:0x[a-z0-9]*]] <line:9:30>
+// C-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_2:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// C-NEXT: | `-DeclRefExpr [[ADDR_3:0x[a-z0-9]*]] <col:15> 'int ({{.*}})' Function [[ADDR_4:0x[a-z0-9]*]] 'also_after1[implementation={vendor(llvm)}]' 'int ({{.*}})'
// C-NEXT: |-FunctionDecl [[ADDR_4]] <col:15, line:15:1> line:9:15 also_after1[implementation={vendor(llvm)}] 'int ({{.*}})'
// C-NEXT: | |-CompoundStmt [[ADDR_5:0x[a-z0-9]*]] <line:13:29, line:15:1>
// C-NEXT: | | `-ReturnStmt [[ADDR_6:0x[a-z0-9]*]] <line:14:3, col:10>
// C-NEXT: | | `-IntegerLiteral [[ADDR_7:0x[a-z0-9]*]] <col:10> 'int' 0
-// C-NEXT: | `-ConstAttr [[ADDR_8:0x[a-z0-9]*]] <line:9:30>
+// C-NEXT: | `-attrDetails: ConstAttr [[ADDR_8:0x[a-z0-9]*]] <line:9:30>
// C-NEXT: |-FunctionDecl [[ADDR_9:0x[a-z0-9]*]] <line:16:1, col:28> col:12 implicit used also_after2 'int ({{.*}})' static
-// C-NEXT: | `-OMPDeclareVariantAttr [[ADDR_10:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// C-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_10:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// C-NEXT: | `-DeclRefExpr [[ADDR_11:0x[a-z0-9]*]] <col:1> 'int ({{.*}})' Function [[ADDR_12:0x[a-z0-9]*]] 'also_after2[implementation={vendor(llvm)}]' 'int ({{.*}})'
// C-NEXT: |-FunctionDecl [[ADDR_12]] <col:1, line:18:1> line:16:1 also_after2[implementation={vendor(llvm)}] 'int ({{.*}})' static
// C-NEXT: | `-CompoundStmt [[ADDR_13:0x[a-z0-9]*]] <col:30, line:18:1>
// C-NEXT: | `-ReturnStmt [[ADDR_14:0x[a-z0-9]*]] <line:17:3, col:10>
// C-NEXT: | `-IntegerLiteral [[ADDR_15:0x[a-z0-9]*]] <col:10> 'int' 0
// C-NEXT: |-FunctionDecl [[ADDR_16:0x[a-z0-9]*]] <line:19:1, col:46> col:30 implicit used also_after3 'int ({{.*}})'
-// C-NEXT: | |-NoThrowAttr [[ADDR_17:0x[a-z0-9]*]] <col:16>
-// C-NEXT: | `-OMPDeclareVariantAttr [[ADDR_18:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// C-NEXT: | |-attrDetails: NoThrowAttr [[ADDR_17:0x[a-z0-9]*]] <col:16>
+// C-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_18:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// C-NEXT: | `-DeclRefExpr [[ADDR_19:0x[a-z0-9]*]] <col:1> 'int ({{.*}})' Function [[ADDR_20:0x[a-z0-9]*]] 'also_after3[implementation={vendor(llvm)}]' 'int ({{.*}})'
// C-NEXT: |-FunctionDecl [[ADDR_20]] <col:1, line:21:1> line:19:1 also_after3[implementation={vendor(llvm)}] 'int ({{.*}})'
// C-NEXT: | |-CompoundStmt [[ADDR_21:0x[a-z0-9]*]] <col:48, line:21:1>
// C-NEXT: | | `-ReturnStmt [[ADDR_22:0x[a-z0-9]*]] <line:20:3, col:10>
// C-NEXT: | | `-IntegerLiteral [[ADDR_23:0x[a-z0-9]*]] <col:10> 'int' 0
-// C-NEXT: | `-NoThrowAttr [[ADDR_24:0x[a-z0-9]*]] <line:19:16>
+// C-NEXT: | `-attrDetails: NoThrowAttr [[ADDR_24:0x[a-z0-9]*]] <line:19:16>
// C-NEXT: |-FunctionDecl [[ADDR_25:0x[a-z0-9]*]] <line:22:1, col:85> col:69 implicit used also_after4 'int ({{.*}})' static inline
-// C-NEXT: | |-ConstAttr [[ADDR_26:0x[a-z0-9]*]] <line:9:30>
-// C-NEXT: | |-NoThrowAttr [[ADDR_27:0x[a-z0-9]*]] <line:22:29>
-// C-NEXT: | |-AlwaysInlineAttr [[ADDR_28:0x[a-z0-9]*]] <col:38> always_inline
-// C-NEXT: | `-OMPDeclareVariantAttr [[ADDR_29:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// C-NEXT: | |-attrDetails: ConstAttr [[ADDR_26:0x[a-z0-9]*]] <line:9:30>
+// C-NEXT: | |-attrDetails: NoThrowAttr [[ADDR_27:0x[a-z0-9]*]] <line:22:29>
+// C-NEXT: | |-attrDetails: AlwaysInlineAttr [[ADDR_28:0x[a-z0-9]*]] <col:38> always_inline
+// C-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_29:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// C-NEXT: | `-DeclRefExpr [[ADDR_30:0x[a-z0-9]*]] <col:1> 'int ({{.*}})' Function [[ADDR_31:0x[a-z0-9]*]] 'also_after4[implementation={vendor(llvm)}]' 'int ({{.*}})'
// C-NEXT: |-FunctionDecl [[ADDR_31]] <col:1, line:24:1> line:22:1 also_after4[implementation={vendor(llvm)}] 'int ({{.*}})' static inline
// C-NEXT: | |-CompoundStmt [[ADDR_32:0x[a-z0-9]*]] <col:87, line:24:1>
// C-NEXT: | | `-ReturnStmt [[ADDR_33:0x[a-z0-9]*]] <line:23:3, col:10>
// C-NEXT: | | `-IntegerLiteral [[ADDR_34:0x[a-z0-9]*]] <col:10> 'int' 0
-// C-NEXT: | |-ConstAttr [[ADDR_35:0x[a-z0-9]*]] <line:9:30>
-// C-NEXT: | |-NoThrowAttr [[ADDR_36:0x[a-z0-9]*]] <line:22:29>
-// C-NEXT: | `-AlwaysInlineAttr [[ADDR_37:0x[a-z0-9]*]] <col:38> always_inline
+// C-NEXT: | |-attrDetails: ConstAttr [[ADDR_35:0x[a-z0-9]*]] <line:9:30>
+// C-NEXT: | |-attrDetails: NoThrowAttr [[ADDR_36:0x[a-z0-9]*]] <line:22:29>
+// C-NEXT: | `-attrDetails: AlwaysInlineAttr [[ADDR_37:0x[a-z0-9]*]] <col:38> always_inline
// C-NEXT: |-FunctionDecl [[ADDR_38:0x[a-z0-9]*]] prev [[ADDR_0]] <line:27:1, line:29:1> line:27:5 used also_after1 'int ({{.*}})'
// C-NEXT: | |-CompoundStmt [[ADDR_39:0x[a-z0-9]*]] <col:23, line:29:1>
// C-NEXT: | | `-ReturnStmt [[ADDR_40:0x[a-z0-9]*]] <line:28:3, col:10>
// C-NEXT: | | `-IntegerLiteral [[ADDR_41:0x[a-z0-9]*]] <col:10> 'int' 1
-// C-NEXT: | |-ConstAttr [[ADDR_42:0x[a-z0-9]*]] <line:9:30> Inherited
-// C-NEXT: | `-OMPDeclareVariantAttr [[ADDR_43:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(llvm)}
+// C-NEXT: | |-attrDetails: ConstAttr [[ADDR_42:0x[a-z0-9]*]] <line:9:30> Inherited
+// C-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_43:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(llvm)}
// C-NEXT: | `-DeclRefExpr [[ADDR_3]] <col:15> 'int ({{.*}})' Function [[ADDR_4]] 'also_after1[implementation={vendor(llvm)}]' 'int ({{.*}})'
// C-NEXT: |-FunctionDecl [[ADDR_44:0x[a-z0-9]*]] prev [[ADDR_9]] <line:30:1, line:32:1> line:30:5 used also_after2 'int ({{.*}})'
// C-NEXT: | |-CompoundStmt [[ADDR_45:0x[a-z0-9]*]] <col:23, line:32:1>
// C-NEXT: | | `-ReturnStmt [[ADDR_46:0x[a-z0-9]*]] <line:31:3, col:10>
// C-NEXT: | | `-IntegerLiteral [[ADDR_47:0x[a-z0-9]*]] <col:10> 'int' 2
-// C-NEXT: | `-OMPDeclareVariantAttr [[ADDR_48:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(llvm)}
+// C-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_48:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(llvm)}
// C-NEXT: | `-DeclRefExpr [[ADDR_11]] <line:16:1> 'int ({{.*}})' Function [[ADDR_12]] 'also_after2[implementation={vendor(llvm)}]' 'int ({{.*}})'
// C-NEXT: |-FunctionDecl [[ADDR_49:0x[a-z0-9]*]] prev [[ADDR_16]] <line:33:1, line:35:1> line:33:5 used also_after3 'int ({{.*}})'
// C-NEXT: | |-CompoundStmt [[ADDR_50:0x[a-z0-9]*]] <col:23, line:35:1>
// C-NEXT: | | `-ReturnStmt [[ADDR_51:0x[a-z0-9]*]] <line:34:3, col:10>
// C-NEXT: | | `-IntegerLiteral [[ADDR_52:0x[a-z0-9]*]] <col:10> 'int' 3
-// C-NEXT: | |-NoThrowAttr [[ADDR_53:0x[a-z0-9]*]] <line:19:16> Inherited
-// C-NEXT: | `-OMPDeclareVariantAttr [[ADDR_54:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(llvm)}
+// C-NEXT: | |-attrDetails: NoThrowAttr [[ADDR_53:0x[a-z0-9]*]] <line:19:16> Inherited
+// C-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_54:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(llvm)}
// C-NEXT: | `-DeclRefExpr [[ADDR_19]] <col:1> 'int ({{.*}})' Function [[ADDR_20]] 'also_after3[implementation={vendor(llvm)}]' 'int ({{.*}})'
// C-NEXT: |-FunctionDecl [[ADDR_55:0x[a-z0-9]*]] prev [[ADDR_25]] <line:36:1, line:38:1> line:36:5 used also_after4 'int ({{.*}})'
// C-NEXT: | |-CompoundStmt [[ADDR_56:0x[a-z0-9]*]] <col:23, line:38:1>
// C-NEXT: | | `-ReturnStmt [[ADDR_57:0x[a-z0-9]*]] <line:37:3, col:10>
// C-NEXT: | | `-IntegerLiteral [[ADDR_58:0x[a-z0-9]*]] <col:10> 'int' 4
-// C-NEXT: | |-ConstAttr [[ADDR_59:0x[a-z0-9]*]] <line:9:30> Inherited
-// C-NEXT: | |-NoThrowAttr [[ADDR_60:0x[a-z0-9]*]] <line:22:29> Inherited
-// C-NEXT: | |-AlwaysInlineAttr [[ADDR_61:0x[a-z0-9]*]] <col:38> Inherited always_inline
-// C-NEXT: | `-OMPDeclareVariantAttr [[ADDR_62:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(llvm)}
+// C-NEXT: | |-attrDetails: ConstAttr [[ADDR_59:0x[a-z0-9]*]] <line:9:30> Inherited
+// C-NEXT: | |-attrDetails: NoThrowAttr [[ADDR_60:0x[a-z0-9]*]] <line:22:29> Inherited
+// C-NEXT: | |-attrDetails: AlwaysInlineAttr [[ADDR_61:0x[a-z0-9]*]] <col:38> Inherited always_inline
+// C-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_62:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(llvm)}
// C-NEXT: | `-DeclRefExpr [[ADDR_30]] <col:1> 'int ({{.*}})' Function [[ADDR_31]] 'also_after4[implementation={vendor(llvm)}]' 'int ({{.*}})'
// C-NEXT: `-FunctionDecl [[ADDR_63:0x[a-z0-9]*]] <line:41:1, line:44:1> line:41:5 main 'int ({{.*}})'
// C-NEXT: `-CompoundStmt [[ADDR_64:0x[a-z0-9]*]] <col:16, line:44:1>
@@ -150,59 +150,59 @@ int main(void) {
// C-NEXT: `-DeclRefExpr [[ADDR_30]] <col:1> 'int ({{.*}})' Function [[ADDR_31]] 'also_after4[implementation={vendor(llvm)}]' 'int ({{.*}})'
// CXX: |-FunctionDecl [[ADDR_0:0x[a-z0-9]*]] <{{.*}}, line:13:27> col:11 implicit used constexpr also_after1 'int ({{.*}})'
-// CXX-NEXT: | `-OMPDeclareVariantAttr [[ADDR_1:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// CXX-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_1:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// CXX-NEXT: | `-DeclRefExpr [[ADDR_2:0x[a-z0-9]*]] <line:7:15> 'int ({{.*}})' Function [[ADDR_3:0x[a-z0-9]*]] 'also_after1[implementation={vendor(llvm)}]' 'int ({{.*}})'
// CXX-NEXT: |-FunctionDecl [[ADDR_3]] <col:15, line:15:1> line:7:15 constexpr also_after1[implementation={vendor(llvm)}] 'int ({{.*}})'
// CXX-NEXT: | `-CompoundStmt [[ADDR_4:0x[a-z0-9]*]] <line:13:29, line:15:1>
// CXX-NEXT: | `-ReturnStmt [[ADDR_5:0x[a-z0-9]*]] <line:14:3, col:10>
// CXX-NEXT: | `-IntegerLiteral [[ADDR_6:0x[a-z0-9]*]] <col:10> 'int' 0
// CXX-NEXT: |-FunctionDecl [[ADDR_7:0x[a-z0-9]*]] <line:16:1, col:28> col:12 implicit used also_after2 'int ({{.*}})' static
-// CXX-NEXT: | `-OMPDeclareVariantAttr [[ADDR_8:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// CXX-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_8:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// CXX-NEXT: | `-DeclRefExpr [[ADDR_9:0x[a-z0-9]*]] <col:1> 'int ({{.*}})' Function [[ADDR_10:0x[a-z0-9]*]] 'also_after2[implementation={vendor(llvm)}]' 'int ({{.*}})'
// CXX-NEXT: |-FunctionDecl [[ADDR_10]] <col:1, line:18:1> line:16:1 also_after2[implementation={vendor(llvm)}] 'int ({{.*}})' static
// CXX-NEXT: | `-CompoundStmt [[ADDR_11:0x[a-z0-9]*]] <col:30, line:18:1>
// CXX-NEXT: | `-ReturnStmt [[ADDR_12:0x[a-z0-9]*]] <line:17:3, col:10>
// CXX-NEXT: | `-IntegerLiteral [[ADDR_13:0x[a-z0-9]*]] <col:10> 'int' 0
// CXX-NEXT: |-FunctionDecl [[ADDR_14:0x[a-z0-9]*]] <line:19:1, col:46> col:30 implicit used also_after3 'int ({{.*}}) __attribute__((nothrow))'
-// CXX-NEXT: | `-OMPDeclareVariantAttr [[ADDR_15:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// CXX-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_15:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// CXX-NEXT: | `-DeclRefExpr [[ADDR_16:0x[a-z0-9]*]] <col:1> 'int ({{.*}}) __attribute__((nothrow))' Function [[ADDR_17:0x[a-z0-9]*]] 'also_after3[implementation={vendor(llvm)}]' 'int ({{.*}}) __attribute__((nothrow))'
// CXX-NEXT: |-FunctionDecl [[ADDR_17]] <col:1, line:21:1> line:19:1 also_after3[implementation={vendor(llvm)}] 'int ({{.*}}) __attribute__((nothrow))'
// CXX-NEXT: | `-CompoundStmt [[ADDR_18:0x[a-z0-9]*]] <col:48, line:21:1>
// CXX-NEXT: | `-ReturnStmt [[ADDR_19:0x[a-z0-9]*]] <line:20:3, col:10>
// CXX-NEXT: | `-IntegerLiteral [[ADDR_20:0x[a-z0-9]*]] <col:10> 'int' 0
// CXX-NEXT: |-FunctionDecl [[ADDR_21:0x[a-z0-9]*]] <line:22:1, col:85> col:69 implicit used constexpr also_after4 'int ({{.*}}) __attribute__((nothrow))' static inline
-// CXX-NEXT: | |-AlwaysInlineAttr [[ADDR_22:0x[a-z0-9]*]] <col:38> always_inline
-// CXX-NEXT: | `-OMPDeclareVariantAttr [[ADDR_23:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// CXX-NEXT: | |-attrDetails: AlwaysInlineAttr [[ADDR_22:0x[a-z0-9]*]] <col:38> always_inline
+// CXX-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_23:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// CXX-NEXT: | `-DeclRefExpr [[ADDR_24:0x[a-z0-9]*]] <col:1> 'int ({{.*}}) __attribute__((nothrow))' Function [[ADDR_25:0x[a-z0-9]*]] 'also_after4[implementation={vendor(llvm)}]' 'int ({{.*}}) __attribute__((nothrow))'
// CXX-NEXT: |-FunctionDecl [[ADDR_25]] <col:1, line:24:1> line:22:1 constexpr also_after4[implementation={vendor(llvm)}] 'int ({{.*}}) __attribute__((nothrow))' static inline
// CXX-NEXT: | |-CompoundStmt [[ADDR_26:0x[a-z0-9]*]] <col:87, line:24:1>
// CXX-NEXT: | | `-ReturnStmt [[ADDR_27:0x[a-z0-9]*]] <line:23:3, col:10>
// CXX-NEXT: | | `-IntegerLiteral [[ADDR_28:0x[a-z0-9]*]] <col:10> 'int' 0
-// CXX-NEXT: | `-AlwaysInlineAttr [[ADDR_29:0x[a-z0-9]*]] <line:22:38> always_inline
+// CXX-NEXT: | `-attrDetails: AlwaysInlineAttr [[ADDR_29:0x[a-z0-9]*]] <line:22:38> always_inline
// CXX-NEXT: |-FunctionDecl [[ADDR_30:0x[a-z0-9]*]] <line:27:1, line:29:1> line:27:5 invalid also_after1 'int ({{.*}})'
// CXX-NEXT: | |-CompoundStmt [[ADDR_31:0x[a-z0-9]*]] <col:23, line:29:1>
// CXX-NEXT: | | `-ReturnStmt [[ADDR_32:0x[a-z0-9]*]] <line:28:3, col:10>
// CXX-NEXT: | | `-IntegerLiteral [[ADDR_33:0x[a-z0-9]*]] <col:10> 'int' 1
-// CXX-NEXT: | `-OMPDeclareVariantAttr [[ADDR_34:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(llvm)}
+// CXX-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_34:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(llvm)}
// CXX-NEXT: | `-DeclRefExpr [[ADDR_2]] <line:7:15> 'int ({{.*}})' Function [[ADDR_3]] 'also_after1[implementation={vendor(llvm)}]' 'int ({{.*}})'
// CXX-NEXT: |-FunctionDecl [[ADDR_35:0x[a-z0-9]*]] prev [[ADDR_7]] <line:30:1, line:32:1> line:30:5 used also_after2 'int ({{.*}})'
// CXX-NEXT: | |-CompoundStmt [[ADDR_36:0x[a-z0-9]*]] <col:23, line:32:1>
// CXX-NEXT: | | `-ReturnStmt [[ADDR_37:0x[a-z0-9]*]] <line:31:3, col:10>
// CXX-NEXT: | | `-IntegerLiteral [[ADDR_38:0x[a-z0-9]*]] <col:10> 'int' 2
-// CXX-NEXT: | `-OMPDeclareVariantAttr [[ADDR_39:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(llvm)}
+// CXX-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_39:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(llvm)}
// CXX-NEXT: | `-DeclRefExpr [[ADDR_9]] <line:16:1> 'int ({{.*}})' Function [[ADDR_10]] 'also_after2[implementation={vendor(llvm)}]' 'int ({{.*}})'
// CXX-NEXT: |-FunctionDecl [[ADDR_40:0x[a-z0-9]*]] prev [[ADDR_14]] <line:33:1, line:35:1> line:33:5 used also_after3 'int ({{.*}})'
// CXX-NEXT: | |-CompoundStmt [[ADDR_41:0x[a-z0-9]*]] <col:23, line:35:1>
// CXX-NEXT: | | `-ReturnStmt [[ADDR_42:0x[a-z0-9]*]] <line:34:3, col:10>
// CXX-NEXT: | | `-IntegerLiteral [[ADDR_43:0x[a-z0-9]*]] <col:10> 'int' 3
-// CXX-NEXT: | `-OMPDeclareVariantAttr [[ADDR_44:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(llvm)}
+// CXX-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_44:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(llvm)}
// CXX-NEXT: | `-DeclRefExpr [[ADDR_16]] <line:19:1> 'int ({{.*}}) __attribute__((nothrow))' Function [[ADDR_17]] 'also_after3[implementation={vendor(llvm)}]' 'int ({{.*}}) __attribute__((nothrow))'
// CXX-NEXT: |-FunctionDecl [[ADDR_45:0x[a-z0-9]*]] <line:36:1, line:38:1> line:36:5 invalid also_after4 'int ({{.*}})'
// CXX-NEXT: | |-CompoundStmt [[ADDR_46:0x[a-z0-9]*]] <col:23, line:38:1>
// CXX-NEXT: | | `-ReturnStmt [[ADDR_47:0x[a-z0-9]*]] <line:37:3, col:10>
// CXX-NEXT: | | `-IntegerLiteral [[ADDR_48:0x[a-z0-9]*]] <col:10> 'int' 4
-// CXX-NEXT: | |-AlwaysInlineAttr [[ADDR_49:0x[a-z0-9]*]] <line:22:38> Inherited always_inline
-// CXX-NEXT: | `-OMPDeclareVariantAttr [[ADDR_50:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(llvm)}
+// CXX-NEXT: | |-attrDetails: AlwaysInlineAttr [[ADDR_49:0x[a-z0-9]*]] <line:22:38> Inherited always_inline
+// CXX-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_50:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(llvm)}
// CXX-NEXT: | `-DeclRefExpr [[ADDR_24]] <col:1> 'int ({{.*}}) __attribute__((nothrow))' Function [[ADDR_25]] 'also_after4[implementation={vendor(llvm)}]' 'int ({{.*}}) __attribute__((nothrow))'
// CXX-NEXT: `-FunctionDecl [[ADDR_51:0x[a-z0-9]*]] <line:41:1, line:44:1> line:41:5 main 'int ({{.*}})'
// CXX-NEXT: `-CompoundStmt [[ADDR_52:0x[a-z0-9]*]] <col:16, line:44:1>
diff --git a/clang/test/AST/ast-dump-openmp-begin-declare-variant_12.c b/clang/test/AST/ast-dump-openmp-begin-declare-variant_12.c
index 55524e052eda4..231f70cdaa965 100644
--- a/clang/test/AST/ast-dump-openmp-begin-declare-variant_12.c
+++ b/clang/test/AST/ast-dump-openmp-begin-declare-variant_12.c
@@ -63,62 +63,62 @@ int main(void) {
// C-NEXT: | |-CompoundStmt [[ADDR_1:0x[a-z0-9]*]] <col:23, line:14:1>
// C-NEXT: | | `-ReturnStmt [[ADDR_2:0x[a-z0-9]*]] <line:13:3, col:10>
// C-NEXT: | | `-IntegerLiteral [[ADDR_3:0x[a-z0-9]*]] <col:10> 'int' 1
-// C-NEXT: | |-OverloadableAttr [[ADDR_4:0x[a-z0-9]*]] <line:8:37>
-// C-NEXT: | `-OMPDeclareVariantAttr [[ADDR_5:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// C-NEXT: | |-attrDetails: OverloadableAttr [[ADDR_4:0x[a-z0-9]*]] <line:8:37>
+// C-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_5:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// C-NEXT: | `-DeclRefExpr [[ADDR_6:0x[a-z0-9]*]] <col:22> 'int ({{.*}})' Function [[ADDR_7:0x[a-z0-9]*]] 'also_before[implementation={vendor(llvm)}]' 'int ({{.*}})'
// C-NEXT: |-FunctionDecl [[ADDR_8:0x[a-z0-9]*]] <col:22, line:18:1> line:16:5 used also_before 'int (int)'
// C-NEXT: | |-ParmVarDecl [[ADDR_9:0x[a-z0-9]*]] <col:17, col:21> col:21 i 'int'
-// C-NEXT: | |-CompoundStmt [[ADDR_10:0x[a-z0-9]*]] <col:24, line:18:1>
+// C: | |-CompoundStmt [[ADDR_10:0x[a-z0-9]*]] <col:24, line:18:1>
// C-NEXT: | | `-ReturnStmt [[ADDR_11:0x[a-z0-9]*]] <line:17:3, col:10>
// C-NEXT: | | `-IntegerLiteral [[ADDR_12:0x[a-z0-9]*]] <col:10> 'int' 2
-// C-NEXT: | |-OverloadableAttr [[ADDR_13:0x[a-z0-9]*]] <line:8:37>
-// C-NEXT: | `-OMPDeclareVariantAttr [[ADDR_14:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// C-NEXT: | |-attrDetails: OverloadableAttr [[ADDR_13:0x[a-z0-9]*]] <line:8:37>
+// C-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_14:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// C-NEXT: | `-DeclRefExpr [[ADDR_15:0x[a-z0-9]*]] <col:22> 'int (int)' Function [[ADDR_16:0x[a-z0-9]*]] 'also_before[implementation={vendor(llvm)}]' 'int (int)'
// C-NEXT: |-FunctionDecl [[ADDR_17:0x[a-z0-9]*]] <col:22, line:22:1> line:20:5 used also_before 'int (float)'
// C-NEXT: | |-ParmVarDecl [[ADDR_18:0x[a-z0-9]*]] <col:17, col:23> col:23 f 'float'
-// C-NEXT: | |-CompoundStmt [[ADDR_19:0x[a-z0-9]*]] <col:26, line:22:1>
+// C: | |-CompoundStmt [[ADDR_19:0x[a-z0-9]*]] <col:26, line:22:1>
// C-NEXT: | | `-ReturnStmt [[ADDR_20:0x[a-z0-9]*]] <line:21:3, col:10>
// C-NEXT: | | `-IntegerLiteral [[ADDR_21:0x[a-z0-9]*]] <col:10> 'int' 0
-// C-NEXT: | `-OverloadableAttr [[ADDR_22:0x[a-z0-9]*]] <line:8:37>
+// C-NEXT: | `-attrDetails: OverloadableAttr [[ADDR_22:0x[a-z0-9]*]] <line:8:37>
// C-NEXT: |-FunctionDecl [[ADDR_23:0x[a-z0-9]*]] <col:22, line:26:1> line:24:5 used also_before 'int (double)'
// C-NEXT: | |-ParmVarDecl [[ADDR_24:0x[a-z0-9]*]] <col:17, col:24> col:24 d 'double'
-// C-NEXT: | |-CompoundStmt [[ADDR_25:0x[a-z0-9]*]] <col:27, line:26:1>
+// C: | |-CompoundStmt [[ADDR_25:0x[a-z0-9]*]] <col:27, line:26:1>
// C-NEXT: | | `-ReturnStmt [[ADDR_26:0x[a-z0-9]*]] <line:25:3, col:10>
// C-NEXT: | | `-IntegerLiteral [[ADDR_27:0x[a-z0-9]*]] <col:10> 'int' 3
-// C-NEXT: | |-OverloadableAttr [[ADDR_28:0x[a-z0-9]*]] <line:8:37>
-// C-NEXT: | `-OMPDeclareVariantAttr [[ADDR_29:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// C-NEXT: | |-attrDetails: OverloadableAttr [[ADDR_28:0x[a-z0-9]*]] <line:8:37>
+// C-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_29:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// C-NEXT: | `-DeclRefExpr [[ADDR_30:0x[a-z0-9]*]] <col:22> 'int (double)' Function [[ADDR_31:0x[a-z0-9]*]] 'also_before[implementation={vendor(llvm)}]' 'int (double)'
// C-NEXT: |-FunctionDecl [[ADDR_32:0x[a-z0-9]*]] <col:22, line:30:1> line:28:5 used also_before 'int (long)'
// C-NEXT: | |-ParmVarDecl [[ADDR_33:0x[a-z0-9]*]] <col:17, col:22> col:22 l 'long'
-// C-NEXT: | |-CompoundStmt [[ADDR_34:0x[a-z0-9]*]] <col:25, line:30:1>
+// C: | |-CompoundStmt [[ADDR_34:0x[a-z0-9]*]] <col:25, line:30:1>
// C-NEXT: | | `-ReturnStmt [[ADDR_35:0x[a-z0-9]*]] <line:29:3, col:10>
// C-NEXT: | | `-IntegerLiteral [[ADDR_36:0x[a-z0-9]*]] <col:10> 'int' 4
-// C-NEXT: | |-OverloadableAttr [[ADDR_37:0x[a-z0-9]*]] <line:8:37>
-// C-NEXT: | `-OMPDeclareVariantAttr [[ADDR_38:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// C-NEXT: | |-attrDetails: OverloadableAttr [[ADDR_37:0x[a-z0-9]*]] <line:8:37>
+// C-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_38:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// C-NEXT: | `-DeclRefExpr [[ADDR_39:0x[a-z0-9]*]] <col:22> 'int (long)' Function [[ADDR_40:0x[a-z0-9]*]] 'also_before[implementation={vendor(llvm)}]' 'int (long)'
// C-NEXT: |-FunctionDecl [[ADDR_7]] <col:22, line:36:1> line:8:22 also_before[implementation={vendor(llvm)}] 'int ({{.*}})'
// C-NEXT: | |-CompoundStmt [[ADDR_41:0x[a-z0-9]*]] <line:34:23, line:36:1>
// C-NEXT: | | `-ReturnStmt [[ADDR_42:0x[a-z0-9]*]] <line:35:3, col:10>
// C-NEXT: | | `-IntegerLiteral [[ADDR_43:0x[a-z0-9]*]] <col:10> 'int' 0
-// C-NEXT: | `-OverloadableAttr [[ADDR_44:0x[a-z0-9]*]] <line:8:37>
+// C-NEXT: | `-attrDetails: OverloadableAttr [[ADDR_44:0x[a-z0-9]*]] <line:8:37>
// C-NEXT: |-FunctionDecl [[ADDR_16]] <col:22, line:40:1> line:8:22 also_before[implementation={vendor(llvm)}] 'int (int)'
// C-NEXT: | |-ParmVarDecl [[ADDR_45:0x[a-z0-9]*]] <line:38:17, col:21> col:21 i 'int'
-// C-NEXT: | |-CompoundStmt [[ADDR_46:0x[a-z0-9]*]] <col:24, line:40:1>
+// C: | |-CompoundStmt [[ADDR_46:0x[a-z0-9]*]] <col:24, line:40:1>
// C-NEXT: | | `-ReturnStmt [[ADDR_47:0x[a-z0-9]*]] <line:39:3, col:10>
// C-NEXT: | | `-IntegerLiteral [[ADDR_48:0x[a-z0-9]*]] <col:10> 'int' 0
-// C-NEXT: | `-OverloadableAttr [[ADDR_49:0x[a-z0-9]*]] <line:8:37>
+// C-NEXT: | `-attrDetails: OverloadableAttr [[ADDR_49:0x[a-z0-9]*]] <line:8:37>
// C-NEXT: |-FunctionDecl [[ADDR_31]] <col:22, line:45:1> line:8:22 also_before[implementation={vendor(llvm)}] 'int (double)'
// C-NEXT: | |-ParmVarDecl [[ADDR_50:0x[a-z0-9]*]] <line:43:17, col:24> col:24 d 'double'
-// C-NEXT: | |-CompoundStmt [[ADDR_51:0x[a-z0-9]*]] <col:27, line:45:1>
+// C: | |-CompoundStmt [[ADDR_51:0x[a-z0-9]*]] <col:27, line:45:1>
// C-NEXT: | | `-ReturnStmt [[ADDR_52:0x[a-z0-9]*]] <line:44:3, col:10>
// C-NEXT: | | `-IntegerLiteral [[ADDR_53:0x[a-z0-9]*]] <col:10> 'int' 0
-// C-NEXT: | `-OverloadableAttr [[ADDR_54:0x[a-z0-9]*]] <line:8:37>
+// C-NEXT: | `-attrDetails: OverloadableAttr [[ADDR_54:0x[a-z0-9]*]] <line:8:37>
// C-NEXT: |-FunctionDecl [[ADDR_40]] <col:22, line:49:1> line:8:22 also_before[implementation={vendor(llvm)}] 'int (long)'
// C-NEXT: | |-ParmVarDecl [[ADDR_55:0x[a-z0-9]*]] <line:47:17, col:22> col:22 l 'long'
-// C-NEXT: | |-CompoundStmt [[ADDR_56:0x[a-z0-9]*]] <col:25, line:49:1>
+// C: | |-CompoundStmt [[ADDR_56:0x[a-z0-9]*]] <col:25, line:49:1>
// C-NEXT: | | `-ReturnStmt [[ADDR_57:0x[a-z0-9]*]] <line:48:3, col:10>
// C-NEXT: | | `-IntegerLiteral [[ADDR_58:0x[a-z0-9]*]] <col:10> 'int' 0
-// C-NEXT: | `-OverloadableAttr [[ADDR_59:0x[a-z0-9]*]] <line:8:37>
+// C-NEXT: | `-attrDetails: OverloadableAttr [[ADDR_59:0x[a-z0-9]*]] <line:8:37>
// C-NEXT: `-FunctionDecl [[ADDR_60:0x[a-z0-9]*]] <line:53:1, line:56:1> line:53:5 main 'int ({{.*}})'
// C-NEXT: `-CompoundStmt [[ADDR_61:0x[a-z0-9]*]] <col:16, line:56:1>
// C-NEXT: `-ReturnStmt [[ADDR_62:0x[a-z0-9]*]] <line:55:3, col:96>
@@ -169,33 +169,33 @@ int main(void) {
// CXX-NEXT: | |-CompoundStmt [[ADDR_1:0x[a-z0-9]*]] <col:23, line:14:1>
// CXX-NEXT: | | `-ReturnStmt [[ADDR_2:0x[a-z0-9]*]] <line:13:3, col:10>
// CXX-NEXT: | | `-IntegerLiteral [[ADDR_3:0x[a-z0-9]*]] <col:10> 'int' 1
-// CXX-NEXT: | `-OMPDeclareVariantAttr [[ADDR_4:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// CXX-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_4:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// CXX-NEXT: | `-DeclRefExpr [[ADDR_5:0x[a-z0-9]*]] <line:34:1> 'int ({{.*}})' Function [[ADDR_6:0x[a-z0-9]*]] 'also_before[implementation={vendor(llvm)}]' 'int ({{.*}})'
// CXX-NEXT: |-FunctionDecl [[ADDR_7:0x[a-z0-9]*]] <line:16:1, line:18:1> line:16:5 used also_before 'int (int)'
// CXX-NEXT: | |-ParmVarDecl [[ADDR_8:0x[a-z0-9]*]] <col:17, col:21> col:21 i 'int'
-// CXX-NEXT: | |-CompoundStmt [[ADDR_9:0x[a-z0-9]*]] <col:24, line:18:1>
+// CXX: | |-CompoundStmt [[ADDR_9:0x[a-z0-9]*]] <col:24, line:18:1>
// CXX-NEXT: | | `-ReturnStmt [[ADDR_10:0x[a-z0-9]*]] <line:17:3, col:10>
// CXX-NEXT: | | `-IntegerLiteral [[ADDR_11:0x[a-z0-9]*]] <col:10> 'int' 2
-// CXX-NEXT: | `-OMPDeclareVariantAttr [[ADDR_12:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// CXX-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_12:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// CXX-NEXT: | `-DeclRefExpr [[ADDR_13:0x[a-z0-9]*]] <line:38:1> 'int (int)' Function [[ADDR_14:0x[a-z0-9]*]] 'also_before[implementation={vendor(llvm)}]' 'int (int)'
// CXX-NEXT: |-FunctionDecl [[ADDR_15:0x[a-z0-9]*]] <line:20:1, line:22:1> line:20:5 used also_before 'int (float)'
// CXX-NEXT: | |-ParmVarDecl [[ADDR_16:0x[a-z0-9]*]] <col:17, col:23> col:23 f 'float'
-// CXX-NEXT: | `-CompoundStmt [[ADDR_17:0x[a-z0-9]*]] <col:26, line:22:1>
+// CXX: | `-CompoundStmt [[ADDR_17:0x[a-z0-9]*]] <col:26, line:22:1>
// CXX-NEXT: | `-ReturnStmt [[ADDR_18:0x[a-z0-9]*]] <line:21:3, col:10>
// CXX-NEXT: | `-IntegerLiteral [[ADDR_19:0x[a-z0-9]*]] <col:10> 'int' 0
// CXX-NEXT: |-FunctionDecl [[ADDR_20:0x[a-z0-9]*]] <line:24:1, line:26:1> line:24:5 used also_before 'int (double)'
// CXX-NEXT: | |-ParmVarDecl [[ADDR_21:0x[a-z0-9]*]] <col:17, col:24> col:24 d 'double'
-// CXX-NEXT: | |-CompoundStmt [[ADDR_22:0x[a-z0-9]*]] <col:27, line:26:1>
+// CXX: | |-CompoundStmt [[ADDR_22:0x[a-z0-9]*]] <col:27, line:26:1>
// CXX-NEXT: | | `-ReturnStmt [[ADDR_23:0x[a-z0-9]*]] <line:25:3, col:10>
// CXX-NEXT: | | `-IntegerLiteral [[ADDR_24:0x[a-z0-9]*]] <col:10> 'int' 3
-// CXX-NEXT: | `-OMPDeclareVariantAttr [[ADDR_25:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// CXX-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_25:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// CXX-NEXT: | `-DeclRefExpr [[ADDR_26:0x[a-z0-9]*]] <line:43:1> 'int (double)' Function [[ADDR_27:0x[a-z0-9]*]] 'also_before[implementation={vendor(llvm)}]' 'int (double)'
// CXX-NEXT: |-FunctionDecl [[ADDR_28:0x[a-z0-9]*]] <line:28:1, line:30:1> line:28:5 used also_before 'int (long)'
// CXX-NEXT: | |-ParmVarDecl [[ADDR_29:0x[a-z0-9]*]] <col:17, col:22> col:22 l 'long'
-// CXX-NEXT: | |-CompoundStmt [[ADDR_30:0x[a-z0-9]*]] <col:25, line:30:1>
+// CXX: | |-CompoundStmt [[ADDR_30:0x[a-z0-9]*]] <col:25, line:30:1>
// CXX-NEXT: | | `-ReturnStmt [[ADDR_31:0x[a-z0-9]*]] <line:29:3, col:10>
// CXX-NEXT: | | `-IntegerLiteral [[ADDR_32:0x[a-z0-9]*]] <col:10> 'int' 4
-// CXX-NEXT: | `-OMPDeclareVariantAttr [[ADDR_33:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// CXX-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_33:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// CXX-NEXT: | `-DeclRefExpr [[ADDR_34:0x[a-z0-9]*]] <line:47:1> 'int (long)' Function [[ADDR_35:0x[a-z0-9]*]] 'also_before[implementation={vendor(llvm)}]' 'int (long)'
// CXX-NEXT: |-FunctionDecl [[ADDR_6]] <line:34:1, line:36:1> line:34:1 also_before[implementation={vendor(llvm)}] 'int ({{.*}})'
// CXX-NEXT: | `-CompoundStmt [[ADDR_36:0x[a-z0-9]*]] <col:23, line:36:1>
@@ -203,17 +203,17 @@ int main(void) {
// CXX-NEXT: | `-IntegerLiteral [[ADDR_38:0x[a-z0-9]*]] <col:10> 'int' 0
// CXX-NEXT: |-FunctionDecl [[ADDR_14]] <line:38:1, line:40:1> line:38:1 also_before[implementation={vendor(llvm)}] 'int (int)'
// CXX-NEXT: | |-ParmVarDecl [[ADDR_39:0x[a-z0-9]*]] <col:17, col:21> col:21 i 'int'
-// CXX-NEXT: | `-CompoundStmt [[ADDR_40:0x[a-z0-9]*]] <col:24, line:40:1>
+// CXX: | `-CompoundStmt [[ADDR_40:0x[a-z0-9]*]] <col:24, line:40:1>
// CXX-NEXT: | `-ReturnStmt [[ADDR_41:0x[a-z0-9]*]] <line:39:3, col:10>
// CXX-NEXT: | `-IntegerLiteral [[ADDR_42:0x[a-z0-9]*]] <col:10> 'int' 0
// CXX-NEXT: |-FunctionDecl [[ADDR_27]] <line:43:1, line:45:1> line:43:1 also_before[implementation={vendor(llvm)}] 'int (double)'
// CXX-NEXT: | |-ParmVarDecl [[ADDR_43:0x[a-z0-9]*]] <col:17, col:24> col:24 d 'double'
-// CXX-NEXT: | `-CompoundStmt [[ADDR_44:0x[a-z0-9]*]] <col:27, line:45:1>
+// CXX: | `-CompoundStmt [[ADDR_44:0x[a-z0-9]*]] <col:27, line:45:1>
// CXX-NEXT: | `-ReturnStmt [[ADDR_45:0x[a-z0-9]*]] <line:44:3, col:10>
// CXX-NEXT: | `-IntegerLiteral [[ADDR_46:0x[a-z0-9]*]] <col:10> 'int' 0
// CXX-NEXT: |-FunctionDecl [[ADDR_35]] <line:47:1, line:49:1> line:47:1 also_before[implementation={vendor(llvm)}] 'int (long)'
// CXX-NEXT: | |-ParmVarDecl [[ADDR_47:0x[a-z0-9]*]] <col:17, col:22> col:22 l 'long'
-// CXX-NEXT: | `-CompoundStmt [[ADDR_48:0x[a-z0-9]*]] <col:25, line:49:1>
+// CXX: | `-CompoundStmt [[ADDR_48:0x[a-z0-9]*]] <col:25, line:49:1>
// CXX-NEXT: | `-ReturnStmt [[ADDR_49:0x[a-z0-9]*]] <line:48:3, col:10>
// CXX-NEXT: | `-IntegerLiteral [[ADDR_50:0x[a-z0-9]*]] <col:10> 'int' 0
// CXX-NEXT: `-FunctionDecl [[ADDR_51:0x[a-z0-9]*]] <line:53:1, line:56:1> line:53:5 main 'int ({{.*}})'
diff --git a/clang/test/AST/ast-dump-openmp-begin-declare-variant_13.c b/clang/test/AST/ast-dump-openmp-begin-declare-variant_13.c
index a8ffc3826c983..708e76c8f5ff8 100644
--- a/clang/test/AST/ast-dump-openmp-begin-declare-variant_13.c
+++ b/clang/test/AST/ast-dump-openmp-begin-declare-variant_13.c
@@ -28,10 +28,10 @@ int test(void) {
// CHECK-NEXT: | |-CompoundStmt [[ADDR_1:0x[a-z0-9]*]] <col:23, line:7:1>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_2:0x[a-z0-9]*]] <line:6:3, col:10>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_3:0x[a-z0-9]*]] <col:10> 'int' 1
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_4:0x[a-z0-9]*]] <<invalid sloc>> Implicit user={condition(1)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_4:0x[a-z0-9]*]] <<invalid sloc>> Implicit user={condition(1)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_5:0x[a-z0-9]*]] <line:13:1> 'int ({{.*}})' {{.*}}Function [[ADDR_6:0x[a-z0-9]*]] 'also_before[user={condition(...)}]' 'int ({{.*}})'
// CHECK-NEXT: |-FunctionDecl [[ADDR_7:0x[a-z0-9]*]] <line:10:1, col:20> col:5 implicit used also_after 'int ({{.*}})'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_8:0x[a-z0-9]*]] <<invalid sloc>> Implicit user={condition(1)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_8:0x[a-z0-9]*]] <<invalid sloc>> Implicit user={condition(1)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_9:0x[a-z0-9]*]] <col:1> 'int ({{.*}})' {{.*}}Function [[ADDR_10:0x[a-z0-9]*]] 'also_after[user={condition(...)}]' 'int ({{.*}})'
// CHECK-NEXT: |-FunctionDecl [[ADDR_10]] <col:1, line:12:1> line:10:1 also_after[user={condition(...)}] 'int ({{.*}})'
// CHECK-NEXT: | `-CompoundStmt [[ADDR_11:0x[a-z0-9]*]] <col:22, line:12:1>
@@ -45,7 +45,7 @@ int test(void) {
// CHECK-NEXT: | |-CompoundStmt [[ADDR_18:0x[a-z0-9]*]] <col:22, line:20:1>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_19:0x[a-z0-9]*]] <line:19:3, col:10>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_20:0x[a-z0-9]*]] <col:10> 'int' 2
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_21:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit user={condition(1)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_21:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit user={condition(1)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_9]] <line:10:1> 'int ({{.*}})' {{.*}}Function [[ADDR_10]] 'also_after[user={condition(...)}]' 'int ({{.*}})'
// CHECK-NEXT: `-FunctionDecl [[ADDR_22:0x[a-z0-9]*]] <line:22:1, line:25:1> line:22:5 test 'int ({{.*}})'
// CHECK-NEXT: `-CompoundStmt [[ADDR_23:0x[a-z0-9]*]] <col:16, line:25:1>
diff --git a/clang/test/AST/ast-dump-openmp-begin-declare-variant_2.c b/clang/test/AST/ast-dump-openmp-begin-declare-variant_2.c
index e7a30a9d59671..5fa17437908f5 100644
--- a/clang/test/AST/ast-dump-openmp-begin-declare-variant_2.c
+++ b/clang/test/AST/ast-dump-openmp-begin-declare-variant_2.c
@@ -34,16 +34,16 @@ int test(void) {
// - we pick the right callees
// CHECK: |-FunctionDecl [[ADDR_0:0x[a-z0-9]*]] <{{.*}}, col:21> col:5 implicit used also_before 'int ({{.*}})'
-// CHECK-NEXT: | |-OMPDeclareVariantAttr [[ADDR_1:0x[a-z0-9]*]] <<invalid sloc>> Implicit device={kind(cpu)}
+// CHECK-NEXT: | |-attrDetails: OMPDeclareVariantAttr [[ADDR_1:0x[a-z0-9]*]] <<invalid sloc>> Implicit device={kind(cpu)}
// CHECK-NEXT: | | `-DeclRefExpr [[ADDR_2:0x[a-z0-9]*]] <col:1> 'int ({{.*}})' Function [[ADDR_3:0x[a-z0-9]*]] 'also_before[device={kind(cpu)}]' 'int ({{.*}})'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_4:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(score(0): llvm)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_4:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(score(0): llvm)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_5:0x[a-z0-9]*]] <line:17:1> 'int ({{.*}})' Function [[ADDR_6:0x[a-z0-9]*]] 'also_before[implementation={vendor(llvm)}]' 'int ({{.*}})'
// CHECK-NEXT: |-FunctionDecl [[ADDR_3]] <line:6:1, line:8:1> line:6:1 also_before[device={kind(cpu)}] 'int ({{.*}})'
// CHECK-NEXT: | `-CompoundStmt [[ADDR_7:0x[a-z0-9]*]] <col:23, line:8:1>
// CHECK-NEXT: | `-ReturnStmt [[ADDR_8:0x[a-z0-9]*]] <line:7:3, col:10>
// CHECK-NEXT: | `-IntegerLiteral [[ADDR_9:0x[a-z0-9]*]] <col:10> 'int' 0
// CHECK-NEXT: |-FunctionDecl [[ADDR_10:0x[a-z0-9]*]] <line:12:1, col:20> col:5 implicit used also_after 'int ({{.*}})'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_11:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(score(100): llvm)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_11:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(score(100): llvm)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_12:0x[a-z0-9]*]] <col:1> 'int ({{.*}})' Function [[ADDR_13:0x[a-z0-9]*]] 'also_after[implementation={vendor(llvm)}]' 'int ({{.*}})'
// CHECK-NEXT: |-FunctionDecl [[ADDR_13]] <col:1, line:14:1> line:12:1 also_after[implementation={vendor(llvm)}] 'int ({{.*}})'
// CHECK-NEXT: | `-CompoundStmt [[ADDR_14:0x[a-z0-9]*]] <col:22, line:14:1>
@@ -57,7 +57,7 @@ int test(void) {
// CHECK-NEXT: | |-CompoundStmt [[ADDR_21:0x[a-z0-9]*]] <col:22, line:24:1>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_22:0x[a-z0-9]*]] <line:23:3, col:10>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_23:0x[a-z0-9]*]] <col:10> 'int' 2
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_24:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(score(100): llvm)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_24:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(score(100): llvm)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_12]] <line:12:1> 'int ({{.*}})' Function [[ADDR_13]] 'also_after[implementation={vendor(llvm)}]' 'int ({{.*}})'
// CHECK-NEXT: `-FunctionDecl [[ADDR_25:0x[a-z0-9]*]] <line:26:1, line:29:1> line:26:5 test 'int ({{.*}})'
// CHECK-NEXT: `-CompoundStmt [[ADDR_26:0x[a-z0-9]*]] <col:16, line:29:1>
diff --git a/clang/test/AST/ast-dump-openmp-begin-declare-variant_3.c b/clang/test/AST/ast-dump-openmp-begin-declare-variant_3.c
index da78f2b082072..a36e4fc2abc22 100644
--- a/clang/test/AST/ast-dump-openmp-begin-declare-variant_3.c
+++ b/clang/test/AST/ast-dump-openmp-begin-declare-variant_3.c
@@ -34,16 +34,16 @@ int test(void) {
// - we pick the right callees
// CHECK: |-FunctionDecl [[ADDR_0:0x[a-z0-9]*]] <{{.*}}, col:21> col:5 implicit used also_before 'int ({{.*}})'
-// CHECK-NEXT: | |-OMPDeclareVariantAttr [[ADDR_1:0x[a-z0-9]*]] <<invalid sloc>> Implicit device={kind(cpu)}
+// CHECK-NEXT: | |-attrDetails: OMPDeclareVariantAttr [[ADDR_1:0x[a-z0-9]*]] <<invalid sloc>> Implicit device={kind(cpu)}
// CHECK-NEXT: | | `-DeclRefExpr [[ADDR_2:0x[a-z0-9]*]] <col:1> 'int ({{.*}})' Function [[ADDR_3:0x[a-z0-9]*]] 'also_before[device={kind(cpu)}]' 'int ({{.*}})'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_4:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(score(100): llvm)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_4:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(score(100): llvm)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_5:0x[a-z0-9]*]] <line:17:1> 'int ({{.*}})' Function [[ADDR_6:0x[a-z0-9]*]] 'also_before[implementation={vendor(llvm)}]' 'int ({{.*}})'
// CHECK-NEXT: |-FunctionDecl [[ADDR_3]] <line:6:1, line:8:1> line:6:1 also_before[device={kind(cpu)}] 'int ({{.*}})'
// CHECK-NEXT: | `-CompoundStmt [[ADDR_7:0x[a-z0-9]*]] <col:23, line:8:1>
// CHECK-NEXT: | `-ReturnStmt [[ADDR_8:0x[a-z0-9]*]] <line:7:3, col:10>
// CHECK-NEXT: | `-IntegerLiteral [[ADDR_9:0x[a-z0-9]*]] <col:10> 'int' 1
// CHECK-NEXT: |-FunctionDecl [[ADDR_10:0x[a-z0-9]*]] <line:12:1, col:20> col:5 implicit used also_after 'int ({{.*}})'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_11:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(score(0): llvm)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_11:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(score(0): llvm)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_12:0x[a-z0-9]*]] <col:1> 'int ({{.*}})' Function [[ADDR_13:0x[a-z0-9]*]] 'also_after[implementation={vendor(llvm)}]' 'int ({{.*}})'
// CHECK-NEXT: |-FunctionDecl [[ADDR_13]] <col:1, line:14:1> line:12:1 also_after[implementation={vendor(llvm)}] 'int ({{.*}})'
// CHECK-NEXT: | `-CompoundStmt [[ADDR_14:0x[a-z0-9]*]] <col:22, line:14:1>
@@ -57,7 +57,7 @@ int test(void) {
// CHECK-NEXT: | |-CompoundStmt [[ADDR_21:0x[a-z0-9]*]] <col:22, line:24:1>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_22:0x[a-z0-9]*]] <line:23:3, col:10>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_23:0x[a-z0-9]*]] <col:10> 'int' 2
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_24:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(score(0): llvm)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_24:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(score(0): llvm)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_12]] <line:12:1> 'int ({{.*}})' Function [[ADDR_13]] 'also_after[implementation={vendor(llvm)}]' 'int ({{.*}})'
// CHECK-NEXT: `-FunctionDecl [[ADDR_25:0x[a-z0-9]*]] <line:26:1, line:29:1> line:26:5 test 'int ({{.*}})'
// CHECK-NEXT: `-CompoundStmt [[ADDR_26:0x[a-z0-9]*]] <col:16, line:29:1>
diff --git a/clang/test/AST/ast-dump-openmp-begin-declare-variant_4.c b/clang/test/AST/ast-dump-openmp-begin-declare-variant_4.c
index db43c3a25d100..c33fdb3de5482 100644
--- a/clang/test/AST/ast-dump-openmp-begin-declare-variant_4.c
+++ b/clang/test/AST/ast-dump-openmp-begin-declare-variant_4.c
@@ -22,7 +22,7 @@ int test(void) {
// - we pick the right callees
// CHECK: |-FunctionDecl [[ADDR_0:0x[a-z0-9]*]] <{{.*}}, col:21> col:5 implicit used also_before 'int ({{.*}})'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_1:0x[a-z0-9]*]] <<invalid sloc>> Implicit device={kind(cpu)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_1:0x[a-z0-9]*]] <<invalid sloc>> Implicit device={kind(cpu)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_2:0x[a-z0-9]*]] <col:1> 'int ({{.*}})' Function [[ADDR_3:0x[a-z0-9]*]] 'also_before[device={kind(cpu)}]' 'int ({{.*}})'
// CHECK-NEXT: |-FunctionDecl [[ADDR_3]] <col:1, line:8:1> line:6:1 also_before[device={kind(cpu)}] 'int ({{.*}})'
// CHECK-NEXT: | `-CompoundStmt [[ADDR_4:0x[a-z0-9]*]] <col:23, line:8:1>
diff --git a/clang/test/AST/ast-dump-openmp-begin-declare-variant_5.c b/clang/test/AST/ast-dump-openmp-begin-declare-variant_5.c
index d8ca6860a04b2..ea67fdba787c6 100644
--- a/clang/test/AST/ast-dump-openmp-begin-declare-variant_5.c
+++ b/clang/test/AST/ast-dump-openmp-begin-declare-variant_5.c
@@ -35,10 +35,10 @@ int main(void) {
// C-NEXT: | |-CompoundStmt [[ADDR_1:0x[a-z0-9]*]] <col:23, line:7:1>
// C-NEXT: | | `-ReturnStmt [[ADDR_2:0x[a-z0-9]*]] <line:6:3, col:10>
// C-NEXT: | | `-IntegerLiteral [[ADDR_3:0x[a-z0-9]*]] <col:10> 'int' 1
-// C-NEXT: | `-OMPDeclareVariantAttr [[ADDR_4:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// C-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_4:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// C-NEXT: | `-DeclRefExpr [[ADDR_5:0x[a-z0-9]*]] <line:13:1> 'int ({{.*}})' Function [[ADDR_6:0x[a-z0-9]*]] 'also_before[implementation={vendor(llvm)}]' 'int ({{.*}})'
// C-NEXT: |-FunctionDecl [[ADDR_7:0x[a-z0-9]*]] <line:10:1, col:20> col:5 implicit used also_after 'int ({{.*}})'
-// C-NEXT: | `-OMPDeclareVariantAttr [[ADDR_8:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// C-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_8:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// C-NEXT: | `-DeclRefExpr [[ADDR_9:0x[a-z0-9]*]] <col:1> 'int ({{.*}})' Function [[ADDR_10:0x[a-z0-9]*]] 'also_after[implementation={vendor(llvm)}]' 'int ({{.*}})'
// C-NEXT: |-FunctionDecl [[ADDR_10]] <col:1, line:12:1> line:10:1 also_after[implementation={vendor(llvm)}] 'int ({{.*}})'
// C-NEXT: | `-CompoundStmt [[ADDR_11:0x[a-z0-9]*]] <col:22, line:12:1>
@@ -52,7 +52,7 @@ int main(void) {
// C-NEXT: | |-CompoundStmt [[ADDR_18:0x[a-z0-9]*]] <col:22, line:20:1>
// C-NEXT: | | `-ReturnStmt [[ADDR_19:0x[a-z0-9]*]] <line:19:3, col:10>
// C-NEXT: | | `-IntegerLiteral [[ADDR_20:0x[a-z0-9]*]] <col:10> 'int' 2
-// C-NEXT: | `-OMPDeclareVariantAttr [[ADDR_21:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(llvm)}
+// C-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_21:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(llvm)}
// C-NEXT: | `-DeclRefExpr [[ADDR_9]] <line:10:1> 'int ({{.*}})' Function [[ADDR_10]] 'also_after[implementation={vendor(llvm)}]' 'int ({{.*}})'
// C-NEXT: `-FunctionDecl [[ADDR_22:0x[a-z0-9]*]] <line:22:1, line:28:1> line:22:5 main 'int ({{.*}})'
// C-NEXT: `-CompoundStmt [[ADDR_23:0x[a-z0-9]*]] <col:16, line:28:1>
@@ -97,10 +97,10 @@ int main(void) {
// CXX-NEXT: | |-CompoundStmt [[ADDR_1:0x[a-z0-9]*]] <col:23, line:7:1>
// CXX-NEXT: | | `-ReturnStmt [[ADDR_2:0x[a-z0-9]*]] <line:6:3, col:10>
// CXX-NEXT: | | `-IntegerLiteral [[ADDR_3:0x[a-z0-9]*]] <col:10> 'int' 1
-// CXX-NEXT: | `-OMPDeclareVariantAttr [[ADDR_4:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// CXX-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_4:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// CXX-NEXT: | `-DeclRefExpr [[ADDR_5:0x[a-z0-9]*]] <line:13:1> 'int ({{.*}})' Function [[ADDR_6:0x[a-z0-9]*]] 'also_before[implementation={vendor(llvm)}]' 'int ({{.*}})'
// CXX-NEXT: |-FunctionDecl [[ADDR_7:0x[a-z0-9]*]] <line:10:1, col:20> col:5 implicit used also_after 'int ({{.*}})'
-// CXX-NEXT: | `-OMPDeclareVariantAttr [[ADDR_8:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// CXX-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_8:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// CXX-NEXT: | `-DeclRefExpr [[ADDR_9:0x[a-z0-9]*]] <col:1> 'int ({{.*}})' Function [[ADDR_10:0x[a-z0-9]*]] 'also_after[implementation={vendor(llvm)}]' 'int ({{.*}})'
// CXX-NEXT: |-FunctionDecl [[ADDR_10]] <col:1, line:12:1> line:10:1 also_after[implementation={vendor(llvm)}] 'int ({{.*}})'
// CXX-NEXT: | `-CompoundStmt [[ADDR_11:0x[a-z0-9]*]] <col:22, line:12:1>
@@ -114,7 +114,7 @@ int main(void) {
// CXX-NEXT: | |-CompoundStmt [[ADDR_18:0x[a-z0-9]*]] <col:22, line:20:1>
// CXX-NEXT: | | `-ReturnStmt [[ADDR_19:0x[a-z0-9]*]] <line:19:3, col:10>
// CXX-NEXT: | | `-IntegerLiteral [[ADDR_20:0x[a-z0-9]*]] <col:10> 'int' 2
-// CXX-NEXT: | `-OMPDeclareVariantAttr [[ADDR_21:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(llvm)}
+// CXX-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_21:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(llvm)}
// CXX-NEXT: | `-DeclRefExpr [[ADDR_9]] <line:10:1> 'int ({{.*}})' Function [[ADDR_10]] 'also_after[implementation={vendor(llvm)}]' 'int ({{.*}})'
// CXX-NEXT: `-FunctionDecl [[ADDR_22:0x[a-z0-9]*]] <line:22:1, line:28:1> line:22:5 main 'int ({{.*}})'
// CXX-NEXT: `-CompoundStmt [[ADDR_23:0x[a-z0-9]*]] <col:16, line:28:1>
diff --git a/clang/test/AST/ast-dump-openmp-begin-declare-variant_6.c b/clang/test/AST/ast-dump-openmp-begin-declare-variant_6.c
index 92a5157a9a3a7..1f13e201a0eb1 100644
--- a/clang/test/AST/ast-dump-openmp-begin-declare-variant_6.c
+++ b/clang/test/AST/ast-dump-openmp-begin-declare-variant_6.c
@@ -32,10 +32,10 @@ int main(void) {
// CHECK-NEXT: | |-CompoundStmt [[ADDR_1:0x[a-z0-9]*]] <col:23, line:7:1>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_2:0x[a-z0-9]*]] <line:6:3, col:10>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_3:0x[a-z0-9]*]] <col:10> 'int' 0
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_4:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(ibm)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_4:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(ibm)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_5:0x[a-z0-9]*]] <line:13:1> 'int ({{.*}})' Function [[ADDR_6:0x[a-z0-9]*]] 'also_before[implementation={vendor(ibm)}]' 'int ({{.*}})'
// CHECK-NEXT: |-FunctionDecl [[ADDR_7:0x[a-z0-9]*]] <line:10:1, col:20> col:5 implicit used also_after 'int ({{.*}})'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_8:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(ibm)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_8:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(ibm)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_9:0x[a-z0-9]*]] <col:1> 'int ({{.*}})' Function [[ADDR_10:0x[a-z0-9]*]] 'also_after[implementation={vendor(ibm)}]' 'int ({{.*}})'
// CHECK-NEXT: |-FunctionDecl [[ADDR_10]] <col:1, line:12:1> line:10:1 also_after[implementation={vendor(ibm)}] 'int ({{.*}})'
// CHECK-NEXT: | `-CompoundStmt [[ADDR_11:0x[a-z0-9]*]] <col:22, line:12:1>
@@ -49,7 +49,7 @@ int main(void) {
// CHECK-NEXT: | |-CompoundStmt [[ADDR_18:0x[a-z0-9]*]] <col:22, line:20:1>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_19:0x[a-z0-9]*]] <line:19:3, col:10>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_20:0x[a-z0-9]*]] <col:10> 'int' 0
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_21:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(ibm)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_21:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(ibm)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_9]] <line:10:1> 'int ({{.*}})' Function [[ADDR_10]] 'also_after[implementation={vendor(ibm)}]' 'int ({{.*}})'
// CHECK-NEXT: `-FunctionDecl [[ADDR_22:0x[a-z0-9]*]] <line:22:1, line:25:1> line:22:5 main 'int ({{.*}})'
// CHECK-NEXT: `-CompoundStmt [[ADDR_23:0x[a-z0-9]*]] <col:16, line:25:1>
diff --git a/clang/test/AST/ast-dump-openmp-begin-declare-variant_7.c b/clang/test/AST/ast-dump-openmp-begin-declare-variant_7.c
index 4cf4e9989f13c..900d06ab6d8f5 100644
--- a/clang/test/AST/ast-dump-openmp-begin-declare-variant_7.c
+++ b/clang/test/AST/ast-dump-openmp-begin-declare-variant_7.c
@@ -35,35 +35,35 @@ int test(void) {
// diagnosis in other multi-versioning schemes.
// CHECK: |-FunctionDecl [[ADDR_0:0x[a-z0-9]*]] <{{.*}}, col:14> col:5 used OK_1 'int ({{.*}})'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_1:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(intel)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_1:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(intel)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_2:0x[a-z0-9]*]] <line:8:1> 'int ({{.*}})' Function [[ADDR_3:0x[a-z0-9]*]] 'OK_1[implementation={vendor(intel)}]' 'int ({{.*}})'
// CHECK-NEXT: |-FunctionDecl [[ADDR_3]] <col:1, line:10:1> line:8:1 OK_1[implementation={vendor(intel)}] 'int ({{.*}})'
// CHECK-NEXT: | `-CompoundStmt [[ADDR_4:0x[a-z0-9]*]] <col:16, line:10:1>
// CHECK-NEXT: | `-ReturnStmt [[ADDR_5:0x[a-z0-9]*]] <line:9:3, col:10>
// CHECK-NEXT: | `-IntegerLiteral [[ADDR_6:0x[a-z0-9]*]] <col:10> 'int' 1
// CHECK-NEXT: |-FunctionDecl [[ADDR_7:0x[a-z0-9]*]] <line:11:1, col:14> col:5 implicit OK_2 'int ({{.*}})'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_8:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(intel)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_8:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(intel)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_9:0x[a-z0-9]*]] <col:1> 'int ({{.*}})' Function [[ADDR_10:0x[a-z0-9]*]] 'OK_2[implementation={vendor(intel)}]' 'int ({{.*}})'
// CHECK-NEXT: |-FunctionDecl [[ADDR_10]] <col:1, line:13:1> line:11:1 OK_2[implementation={vendor(intel)}] 'int ({{.*}})'
// CHECK-NEXT: | `-CompoundStmt [[ADDR_11:0x[a-z0-9]*]] <col:16, line:13:1>
// CHECK-NEXT: | `-ReturnStmt [[ADDR_12:0x[a-z0-9]*]] <line:12:3, col:10>
// CHECK-NEXT: | `-IntegerLiteral [[ADDR_13:0x[a-z0-9]*]] <col:10> 'int' 1
// CHECK-NEXT: |-FunctionDecl [[ADDR_14:0x[a-z0-9]*]] <line:14:1, col:16> col:5 implicit used not_OK 'int ({{.*}})'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_15:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(intel)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_15:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(intel)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_16:0x[a-z0-9]*]] <col:1> 'int ({{.*}})' Function [[ADDR_17:0x[a-z0-9]*]] 'not_OK[implementation={vendor(intel)}]' 'int ({{.*}})'
// CHECK-NEXT: |-FunctionDecl [[ADDR_17]] <col:1, line:16:1> line:14:1 not_OK[implementation={vendor(intel)}] 'int ({{.*}})'
// CHECK-NEXT: | `-CompoundStmt [[ADDR_18:0x[a-z0-9]*]] <col:18, line:16:1>
// CHECK-NEXT: | `-ReturnStmt [[ADDR_19:0x[a-z0-9]*]] <line:15:3, col:10>
// CHECK-NEXT: | `-IntegerLiteral [[ADDR_20:0x[a-z0-9]*]] <col:10> 'int' 1
// CHECK-NEXT: |-FunctionDecl [[ADDR_21:0x[a-z0-9]*]] <line:17:1, col:14> col:5 implicit used OK_3 'int ({{.*}})'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_22:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(intel)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_22:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(intel)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_23:0x[a-z0-9]*]] <col:1> 'int ({{.*}})' Function [[ADDR_24:0x[a-z0-9]*]] 'OK_3[implementation={vendor(intel)}]' 'int ({{.*}})'
// CHECK-NEXT: |-FunctionDecl [[ADDR_24]] <col:1, line:19:1> line:17:1 OK_3[implementation={vendor(intel)}] 'int ({{.*}})'
// CHECK-NEXT: | `-CompoundStmt [[ADDR_25:0x[a-z0-9]*]] <col:16, line:19:1>
// CHECK-NEXT: | `-ReturnStmt [[ADDR_26:0x[a-z0-9]*]] <line:18:3, col:10>
// CHECK-NEXT: | `-IntegerLiteral [[ADDR_27:0x[a-z0-9]*]] <col:10> 'int' 1
// CHECK-NEXT: |-FunctionDecl [[ADDR_28:0x[a-z0-9]*]] prev [[ADDR_21]] <line:22:1, col:14> col:5 used OK_3 'int ({{.*}})'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_29:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(intel)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_29:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(intel)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_23]] <line:17:1> 'int ({{.*}})' Function [[ADDR_24]] 'OK_3[implementation={vendor(intel)}]' 'int ({{.*}})'
// CHECK-NEXT: `-FunctionDecl [[ADDR_30:0x[a-z0-9]*]] <line:24:1, line:27:1> line:24:5 test 'int ({{.*}})'
// CHECK-NEXT: `-CompoundStmt [[ADDR_31:0x[a-z0-9]*]] <col:16, line:27:1>
diff --git a/clang/test/AST/ast-dump-openmp-begin-declare-variant_8.c b/clang/test/AST/ast-dump-openmp-begin-declare-variant_8.c
index da78f2b082072..a36e4fc2abc22 100644
--- a/clang/test/AST/ast-dump-openmp-begin-declare-variant_8.c
+++ b/clang/test/AST/ast-dump-openmp-begin-declare-variant_8.c
@@ -34,16 +34,16 @@ int test(void) {
// - we pick the right callees
// CHECK: |-FunctionDecl [[ADDR_0:0x[a-z0-9]*]] <{{.*}}, col:21> col:5 implicit used also_before 'int ({{.*}})'
-// CHECK-NEXT: | |-OMPDeclareVariantAttr [[ADDR_1:0x[a-z0-9]*]] <<invalid sloc>> Implicit device={kind(cpu)}
+// CHECK-NEXT: | |-attrDetails: OMPDeclareVariantAttr [[ADDR_1:0x[a-z0-9]*]] <<invalid sloc>> Implicit device={kind(cpu)}
// CHECK-NEXT: | | `-DeclRefExpr [[ADDR_2:0x[a-z0-9]*]] <col:1> 'int ({{.*}})' Function [[ADDR_3:0x[a-z0-9]*]] 'also_before[device={kind(cpu)}]' 'int ({{.*}})'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_4:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(score(100): llvm)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_4:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(score(100): llvm)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_5:0x[a-z0-9]*]] <line:17:1> 'int ({{.*}})' Function [[ADDR_6:0x[a-z0-9]*]] 'also_before[implementation={vendor(llvm)}]' 'int ({{.*}})'
// CHECK-NEXT: |-FunctionDecl [[ADDR_3]] <line:6:1, line:8:1> line:6:1 also_before[device={kind(cpu)}] 'int ({{.*}})'
// CHECK-NEXT: | `-CompoundStmt [[ADDR_7:0x[a-z0-9]*]] <col:23, line:8:1>
// CHECK-NEXT: | `-ReturnStmt [[ADDR_8:0x[a-z0-9]*]] <line:7:3, col:10>
// CHECK-NEXT: | `-IntegerLiteral [[ADDR_9:0x[a-z0-9]*]] <col:10> 'int' 1
// CHECK-NEXT: |-FunctionDecl [[ADDR_10:0x[a-z0-9]*]] <line:12:1, col:20> col:5 implicit used also_after 'int ({{.*}})'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_11:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(score(0): llvm)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_11:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(score(0): llvm)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_12:0x[a-z0-9]*]] <col:1> 'int ({{.*}})' Function [[ADDR_13:0x[a-z0-9]*]] 'also_after[implementation={vendor(llvm)}]' 'int ({{.*}})'
// CHECK-NEXT: |-FunctionDecl [[ADDR_13]] <col:1, line:14:1> line:12:1 also_after[implementation={vendor(llvm)}] 'int ({{.*}})'
// CHECK-NEXT: | `-CompoundStmt [[ADDR_14:0x[a-z0-9]*]] <col:22, line:14:1>
@@ -57,7 +57,7 @@ int test(void) {
// CHECK-NEXT: | |-CompoundStmt [[ADDR_21:0x[a-z0-9]*]] <col:22, line:24:1>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_22:0x[a-z0-9]*]] <line:23:3, col:10>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_23:0x[a-z0-9]*]] <col:10> 'int' 2
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_24:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(score(0): llvm)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_24:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(score(0): llvm)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_12]] <line:12:1> 'int ({{.*}})' Function [[ADDR_13]] 'also_after[implementation={vendor(llvm)}]' 'int ({{.*}})'
// CHECK-NEXT: `-FunctionDecl [[ADDR_25:0x[a-z0-9]*]] <line:26:1, line:29:1> line:26:5 test 'int ({{.*}})'
// CHECK-NEXT: `-CompoundStmt [[ADDR_26:0x[a-z0-9]*]] <col:16, line:29:1>
diff --git a/clang/test/AST/ast-dump-openmp-begin-declare-variant_9.c b/clang/test/AST/ast-dump-openmp-begin-declare-variant_9.c
index 02f73538a9782..616ae5f363695 100644
--- a/clang/test/AST/ast-dump-openmp-begin-declare-variant_9.c
+++ b/clang/test/AST/ast-dump-openmp-begin-declare-variant_9.c
@@ -39,10 +39,10 @@ int main(void) {
// C-NEXT: | |-CompoundStmt [[ADDR_1:0x[a-z0-9]*]] <col:23, line:7:1>
// C-NEXT: | | `-ReturnStmt [[ADDR_2:0x[a-z0-9]*]] <line:6:3, col:10>
// C-NEXT: | | `-IntegerLiteral [[ADDR_3:0x[a-z0-9]*]] <col:10> 'int' 0
-// C-NEXT: | `-OMPDeclareVariantAttr [[ADDR_4:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// C-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_4:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// C-NEXT: | `-DeclRefExpr [[ADDR_5:0x[a-z0-9]*]] <line:13:1> 'int ({{.*}})' Function [[ADDR_6:0x[a-z0-9]*]] 'also_before[implementation={vendor(llvm)}]' 'int ({{.*}})'
// C-NEXT: |-FunctionDecl [[ADDR_7:0x[a-z0-9]*]] <line:10:1, col:20> col:5 implicit used also_after 'int ({{.*}})'
-// C-NEXT: | `-OMPDeclareVariantAttr [[ADDR_8:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// C-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_8:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// C-NEXT: | `-DeclRefExpr [[ADDR_9:0x[a-z0-9]*]] <col:1> 'int ({{.*}})' Function [[ADDR_10:0x[a-z0-9]*]] 'also_after[implementation={vendor(llvm)}]' 'int ({{.*}})'
// C-NEXT: |-FunctionDecl [[ADDR_10]] <col:1, line:12:1> line:10:1 also_after[implementation={vendor(llvm)}] 'int ({{.*}})'
// C-NEXT: | `-CompoundStmt [[ADDR_11:0x[a-z0-9]*]] <col:22, line:12:1>
@@ -56,19 +56,19 @@ int main(void) {
// C-NEXT: | |-CompoundStmt [[ADDR_18:0x[a-z0-9]*]] <col:22, line:20:1>
// C-NEXT: | | `-ReturnStmt [[ADDR_19:0x[a-z0-9]*]] <line:19:3, col:10>
// C-NEXT: | | `-IntegerLiteral [[ADDR_20:0x[a-z0-9]*]] <col:10> 'int' 0
-// C-NEXT: | `-OMPDeclareVariantAttr [[ADDR_21:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(llvm)}
+// C-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_21:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(llvm)}
// C-NEXT: | `-DeclRefExpr [[ADDR_9]] <line:10:1> 'int ({{.*}})' Function [[ADDR_10]] 'also_after[implementation={vendor(llvm)}]' 'int ({{.*}})'
// C-NEXT: |-FunctionDecl [[ADDR_22:0x[a-z0-9]*]] <line:22:1, col:14> col:6 used foo 'void ({{.*}})'
// C-NEXT: |-TypedefDecl [[ADDR_23:0x[a-z0-9]*]] <line:23:1, col:22> col:14 referenced fd 'int (*)({{.*}})'
-// C-NEXT: | `-PointerType [[ADDR_24:0x[a-z0-9]*]] 'int (*)({{.*}})'
-// C-NEXT: | `-ParenType [[ADDR_25:0x[a-z0-9]*]] 'int ({{.*}})' sugar
-// C-NEXT: | `-FunctionProtoType [[ADDR_26:0x[a-z0-9]*]] 'int ({{.*}})' cdecl
-// C-NEXT: | `-BuiltinType [[ADDR_27:0x[a-z0-9]*]] 'int'
+// C-NEXT: | `-typeDetails: PointerType [[ADDR_24:0x[a-z0-9]*]] 'int (*)({{.*}})'
+// C-NEXT: | `-typeDetails: ParenType [[ADDR_25:0x[a-z0-9]*]] 'int ({{.*}})' sugar
+// C-NEXT: | `-typeDetails: FunctionProtoType [[ADDR_26:0x[a-z0-9]*]] 'int ({{.*}})' cdecl
+// C: | `-functionDetails: cdeclReturnType [[ADDR_27:0x[a-z0-9]*]] 'int'
// C-NEXT: `-FunctionDecl [[ADDR_28:0x[a-z0-9]*]] <line:24:1, line:32:1> line:24:5 main 'int ({{.*}})'
// C-NEXT: `-CompoundStmt [[ADDR_29:0x[a-z0-9]*]] <col:16, line:32:1>
// C-NEXT: |-DeclStmt [[ADDR_30:0x[a-z0-9]*]] <line:26:3, col:12>
// C-NEXT: | `-VarDecl [[ADDR_31:0x[a-z0-9]*]] <col:3, col:11> col:6 used fns 'fd[2]'
-// C-NEXT: |-BinaryOperator [[ADDR_32:0x[a-z0-9]*]] <line:27:3, col:13> 'fd':'int (*)({{.*}})' '='
+// C: |-BinaryOperator [[ADDR_32:0x[a-z0-9]*]] <line:27:3, col:13> 'fd':'int (*)({{.*}})' '='
// C-NEXT: | |-ArraySubscriptExpr [[ADDR_33:0x[a-z0-9]*]] <col:3, col:8> 'fd':'int (*)({{.*}})' lvalue
// C-NEXT: | | |-ImplicitCastExpr [[ADDR_34:0x[a-z0-9]*]] <col:3> 'fd *' <ArrayToPointerDecay>
// C-NEXT: | | | `-DeclRefExpr [[ADDR_35:0x[a-z0-9]*]] <col:3> 'fd[2]' {{.*}}Var [[ADDR_31]] 'fns' 'fd[2]'
@@ -112,10 +112,10 @@ int main(void) {
// CXX-NEXT: | |-CompoundStmt [[ADDR_1:0x[a-z0-9]*]] <col:23, line:7:1>
// CXX-NEXT: | | `-ReturnStmt [[ADDR_2:0x[a-z0-9]*]] <line:6:3, col:10>
// CXX-NEXT: | | `-IntegerLiteral [[ADDR_3:0x[a-z0-9]*]] <col:10> 'int' 0
-// CXX-NEXT: | `-OMPDeclareVariantAttr [[ADDR_4:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// CXX-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_4:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// CXX-NEXT: | `-DeclRefExpr [[ADDR_5:0x[a-z0-9]*]] <line:13:1> 'int ({{.*}})' Function [[ADDR_6:0x[a-z0-9]*]] 'also_before[implementation={vendor(llvm)}]' 'int ({{.*}})'
// CXX-NEXT: |-FunctionDecl [[ADDR_7:0x[a-z0-9]*]] <line:10:1, col:20> col:5 implicit used also_after 'int ({{.*}})'
-// CXX-NEXT: | `-OMPDeclareVariantAttr [[ADDR_8:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// CXX-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_8:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// CXX-NEXT: | `-DeclRefExpr [[ADDR_9:0x[a-z0-9]*]] <col:1> 'int ({{.*}})' Function [[ADDR_10:0x[a-z0-9]*]] 'also_after[implementation={vendor(llvm)}]' 'int ({{.*}})'
// CXX-NEXT: |-FunctionDecl [[ADDR_10]] <col:1, line:12:1> line:10:1 also_after[implementation={vendor(llvm)}] 'int ({{.*}})'
// CXX-NEXT: | `-CompoundStmt [[ADDR_11:0x[a-z0-9]*]] <col:22, line:12:1>
@@ -129,19 +129,19 @@ int main(void) {
// CXX-NEXT: | |-CompoundStmt [[ADDR_18:0x[a-z0-9]*]] <col:22, line:20:1>
// CXX-NEXT: | | `-ReturnStmt [[ADDR_19:0x[a-z0-9]*]] <line:19:3, col:10>
// CXX-NEXT: | | `-IntegerLiteral [[ADDR_20:0x[a-z0-9]*]] <col:10> 'int' 0
-// CXX-NEXT: | `-OMPDeclareVariantAttr [[ADDR_21:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(llvm)}
+// CXX-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_21:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(llvm)}
// CXX-NEXT: | `-DeclRefExpr [[ADDR_9]] <line:10:1> 'int ({{.*}})' Function [[ADDR_10]] 'also_after[implementation={vendor(llvm)}]' 'int ({{.*}})'
// CXX-NEXT: |-FunctionDecl [[ADDR_22:0x[a-z0-9]*]] <line:22:1, col:14> col:6 used foo 'void ({{.*}})'
// CXX-NEXT: |-TypedefDecl [[ADDR_23:0x[a-z0-9]*]] <line:23:1, col:22> col:14 referenced fd 'int (*)({{.*}})'
-// CXX-NEXT: | `-PointerType [[ADDR_24:0x[a-z0-9]*]] 'int (*)({{.*}})'
-// CXX-NEXT: | `-ParenType [[ADDR_25:0x[a-z0-9]*]] 'int ({{.*}})' sugar
-// CXX-NEXT: | `-FunctionProtoType [[ADDR_26:0x[a-z0-9]*]] 'int ({{.*}})' cdecl
-// CXX-NEXT: | `-BuiltinType [[ADDR_27:0x[a-z0-9]*]] 'int'
+// CXX-NEXT: | `-typeDetails: PointerType [[ADDR_24:0x[a-z0-9]*]] 'int (*)({{.*}})'
+// CXX-NEXT: | `-typeDetails: ParenType [[ADDR_25:0x[a-z0-9]*]] 'int ({{.*}})' sugar
+// CXX-NEXT: | `-typeDetails: FunctionProtoType [[ADDR_26:0x[a-z0-9]*]] 'int ({{.*}})' cdecl
+// CXX: | `-functionDetails: cdeclReturnType [[ADDR_27:0x[a-z0-9]*]] 'int'
// CXX-NEXT: `-FunctionDecl [[ADDR_28:0x[a-z0-9]*]] <line:24:1, line:32:1> line:24:5 main 'int ({{.*}})'
// CXX-NEXT: `-CompoundStmt [[ADDR_29:0x[a-z0-9]*]] <col:16, line:32:1>
// CXX-NEXT: |-DeclStmt [[ADDR_30:0x[a-z0-9]*]] <line:26:3, col:12>
// CXX-NEXT: | `-VarDecl [[ADDR_31:0x[a-z0-9]*]] <col:3, col:11> col:6 used fns 'fd[2]'
-// CXX-NEXT: |-BinaryOperator [[ADDR_32:0x[a-z0-9]*]] <line:27:3, col:13> 'fd':'int (*)({{.*}})' {{.*}}'='
+// CXX: |-BinaryOperator [[ADDR_32:0x[a-z0-9]*]] <line:27:3, col:13> 'fd':'int (*)({{.*}})' {{.*}}'='
// CXX-NEXT: | |-ArraySubscriptExpr [[ADDR_33:0x[a-z0-9]*]] <col:3, col:8> 'fd':'int (*)({{.*}})' lvalue
// CXX-NEXT: | | |-ImplicitCastExpr [[ADDR_34:0x[a-z0-9]*]] <col:3> 'fd *' <ArrayToPointerDecay>
// CXX-NEXT: | | | `-DeclRefExpr [[ADDR_35:0x[a-z0-9]*]] <col:3> 'fd[2]' {{.*}}Var [[ADDR_31]] 'fns' 'fd[2]'
diff --git a/clang/test/AST/ast-dump-openmp-begin-declare-variant_addr_1.c b/clang/test/AST/ast-dump-openmp-begin-declare-variant_addr_1.c
index 0b082007ba80b..55a887827c512 100644
--- a/clang/test/AST/ast-dump-openmp-begin-declare-variant_addr_1.c
+++ b/clang/test/AST/ast-dump-openmp-begin-declare-variant_addr_1.c
@@ -38,10 +38,10 @@ int main(void) {
// CHECK-NEXT: | |-CompoundStmt [[ADDR_1:0x[a-z0-9]*]] <col:23, line:7:1>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_2:0x[a-z0-9]*]] <line:6:3, col:10>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_3:0x[a-z0-9]*]] <col:10> 'int' 0
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_4:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_4:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_5:0x[a-z0-9]*]] <line:13:1> 'int ({{.*}})' Function [[ADDR_6:0x[a-z0-9]*]] 'also_before[implementation={vendor(llvm)}]' 'int ({{.*}})'
// CHECK-NEXT: |-FunctionDecl [[ADDR_7:0x[a-z0-9]*]] <line:10:1, col:20> col:5 implicit used also_after 'int ({{.*}})'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_8:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_8:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_9:0x[a-z0-9]*]] <col:1> 'int ({{.*}})' Function [[ADDR_10:0x[a-z0-9]*]] 'also_after[implementation={vendor(llvm)}]' 'int ({{.*}})'
// CHECK-NEXT: |-FunctionDecl [[ADDR_10]] <col:1, line:12:1> line:10:1 also_after[implementation={vendor(llvm)}] 'int ({{.*}})'
// CHECK-NEXT: | `-CompoundStmt [[ADDR_11:0x[a-z0-9]*]] <col:22, line:12:1>
@@ -55,11 +55,11 @@ int main(void) {
// CHECK-NEXT: | |-CompoundStmt [[ADDR_18:0x[a-z0-9]*]] <col:22, line:20:1>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_19:0x[a-z0-9]*]] <line:19:3, col:10>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_20:0x[a-z0-9]*]] <col:10> 'int' 0
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_21:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(llvm)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_21:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(llvm)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_9]] <line:10:1> 'int ({{.*}})' Function [[ADDR_10]] 'also_after[implementation={vendor(llvm)}]' 'int ({{.*}})'
// CHECK-NEXT: |-FunctionDecl [[ADDR_22:0x[a-z0-9]*]] <line:22:1, line:24:1> line:22:5 used test 'int (int (*)({{.*}}))'
// CHECK-NEXT: | |-ParmVarDecl [[ADDR_23:0x[a-z0-9]*]] <col:10, col:24> col:16 used fd 'int (*)({{.*}})'
-// CHECK-NEXT: | `-CompoundStmt [[ADDR_24:0x[a-z0-9]*]] <col:27, line:24:1>
+// CHECK: | `-CompoundStmt [[ADDR_24:0x[a-z0-9]*]] <col:27, line:24:1>
// CHECK-NEXT: | `-ReturnStmt [[ADDR_25:0x[a-z0-9]*]] <line:23:3, col:13>
// CHECK-NEXT: | `-CallExpr [[ADDR_26:0x[a-z0-9]*]] <col:10, col:13> 'int'
// CHECK-NEXT: | `-ImplicitCastExpr [[ADDR_27:0x[a-z0-9]*]] <col:10> 'int (*)({{.*}})' <LValueToRValue>
diff --git a/clang/test/AST/ast-dump-openmp-begin-declare-variant_namespace_1.cpp b/clang/test/AST/ast-dump-openmp-begin-declare-variant_namespace_1.cpp
index 99e02adb6b4de..62d574b8e7ba9 100644
--- a/clang/test/AST/ast-dump-openmp-begin-declare-variant_namespace_1.cpp
+++ b/clang/test/AST/ast-dump-openmp-begin-declare-variant_namespace_1.cpp
@@ -73,19 +73,19 @@ int main() {
// CHECK-NEXT: | |-CompoundStmt [[ADDR_7:0x[a-z0-9]*]] <col:15, line:12:1>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_8:0x[a-z0-9]*]] <line:11:3, col:10>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_9:0x[a-z0-9]*]] <col:10> 'int' 1
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_10:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_10:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_11:0x[a-z0-9]*]] <line:34:1> 'int ({{.*}})' Function [[ADDR_12:0x[a-z0-9]*]] 'bar[implementation={vendor(llvm)}]' 'int ({{.*}})'
// CHECK-NEXT: |-NamespaceDecl [[ADDR_13:0x[a-z0-9]*]] <line:15:1, line:19:1> line:15:11 C
// CHECK-NEXT: | `-FunctionDecl [[ADDR_14:0x[a-z0-9]*]] <line:16:1, line:18:1> line:16:5 used baz 'int ({{.*}})'
// CHECK-NEXT: | |-CompoundStmt [[ADDR_15:0x[a-z0-9]*]] <col:15, line:18:1>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_16:0x[a-z0-9]*]] <line:17:3, col:10>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_17:0x[a-z0-9]*]] <col:10> 'int' 2
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_18:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_18:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_19:0x[a-z0-9]*]] <line:42:1> 'int ({{.*}})' Function [[ADDR_20:0x[a-z0-9]*]] 'baz[implementation={vendor(llvm)}]' 'int ({{.*}})'
// CHECK-NEXT: |-FunctionDecl [[ADDR_21:0x[a-z0-9]*]] <line:24:1, col:13> col:5 implicit foo 'int ({{.*}})'
-// CHECK-NEXT: | |-OMPDeclareVariantAttr [[ADDR_22:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// CHECK-NEXT: | |-attrDetails: OMPDeclareVariantAttr [[ADDR_22:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// CHECK-NEXT: | | `-DeclRefExpr [[ADDR_23:0x[a-z0-9]*]] <col:1> 'int ({{.*}})' Function [[ADDR_24:0x[a-z0-9]*]] 'foo[implementation={vendor(llvm)}]' 'int ({{.*}})'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_25:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_25:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(llvm)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_26:0x[a-z0-9]*]] <line:30:1> 'int ({{.*}})' Function [[ADDR_27:0x[a-z0-9]*]] 'foo[implementation={vendor(llvm)}]' 'int ({{.*}})'
// CHECK-NEXT: |-FunctionDecl [[ADDR_24]] <line:24:1, line:26:1> line:24:1 foo[implementation={vendor(llvm)}] 'int ({{.*}})'
// CHECK-NEXT: | `-CompoundStmt [[ADDR_28:0x[a-z0-9]*]] <col:15, line:26:1>
diff --git a/clang/test/AST/ast-dump-openmp-begin-declare-variant_nested.c b/clang/test/AST/ast-dump-openmp-begin-declare-variant_nested.c
index 11bd51e7443bc..0d0a362dc99e6 100644
--- a/clang/test/AST/ast-dump-openmp-begin-declare-variant_nested.c
+++ b/clang/test/AST/ast-dump-openmp-begin-declare-variant_nested.c
@@ -42,10 +42,10 @@ int non_equivalent_isa_trait(void);
// CHECK-NEXT: | |-CompoundStmt [[ADDR_1:0x[a-z0-9]*]] <col:23, line:7:1>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_2:0x[a-z0-9]*]] <line:6:3, col:10>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_3:0x[a-z0-9]*]] <col:10> 'int' 1
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_4:0x[a-z0-9]*]] <<invalid sloc>> Implicit device={kind(any, cpu)}, implementation={dynamic_allocators, vendor(llvm, pgi), extension(match_any)}, user={condition(1)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_4:0x[a-z0-9]*]] <<invalid sloc>> Implicit device={kind(any, cpu)}, implementation={dynamic_allocators, vendor(llvm, pgi), extension(match_any)}, user={condition(1)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_5:0x[a-z0-9]*]] <line:15:1> 'int ({{.*}})' {{.*}}Function [[ADDR_6:0x[a-z0-9]*]] 'also_before[device={kind(any, cpu)}, implementation={dynamic_allocators, vendor(llvm, pgi), extension(match_any)}, user={condition(...)}]' 'int ({{.*}})'
// CHECK-NEXT: |-FunctionDecl [[ADDR_7:0x[a-z0-9]*]] <line:12:1, col:20> col:5 implicit used also_after 'int ({{.*}})'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_8:0x[a-z0-9]*]] <<invalid sloc>> Implicit device={kind(any, cpu)}, implementation={dynamic_allocators, vendor(llvm, pgi), extension(match_any)}, user={condition(1)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_8:0x[a-z0-9]*]] <<invalid sloc>> Implicit device={kind(any, cpu)}, implementation={dynamic_allocators, vendor(llvm, pgi), extension(match_any)}, user={condition(1)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_9:0x[a-z0-9]*]] <col:1> 'int ({{.*}})' {{.*}}Function [[ADDR_10:0x[a-z0-9]*]] 'also_after[device={kind(any, cpu)}, implementation={dynamic_allocators, vendor(llvm, pgi), extension(match_any)}, user={condition(...)}]' 'int ({{.*}})'
// CHECK-NEXT: |-FunctionDecl [[ADDR_10]] <col:1, line:14:1> line:12:1 also_after[device={kind(any, cpu)}, implementation={dynamic_allocators, vendor(llvm, pgi), extension(match_any)}, user={condition(...)}] 'int ({{.*}})'
// CHECK-NEXT: | `-CompoundStmt [[ADDR_11:0x[a-z0-9]*]] <col:22, line:14:1>
@@ -59,7 +59,7 @@ int non_equivalent_isa_trait(void);
// CHECK-NEXT: | |-CompoundStmt [[ADDR_18:0x[a-z0-9]*]] <col:22, line:24:1>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_19:0x[a-z0-9]*]] <line:23:3, col:10>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_20:0x[a-z0-9]*]] <col:10> 'int' 2
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_21:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit device={kind(any, cpu)}, implementation={dynamic_allocators, vendor(llvm, pgi), extension(match_any)}, user={condition(1)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_21:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit device={kind(any, cpu)}, implementation={dynamic_allocators, vendor(llvm, pgi), extension(match_any)}, user={condition(1)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_9]] <line:12:1> 'int ({{.*}})' {{.*}}Function [[ADDR_10]] 'also_after[device={kind(any, cpu)}, implementation={dynamic_allocators, vendor(llvm, pgi), extension(match_any)}, user={condition(...)}]' 'int ({{.*}})'
// CHECK-NEXT: |-FunctionDecl [[ADDR_22:0x[a-z0-9]*]] <line:26:1, line:29:1> line:26:5 referenced test 'int ({{.*}})'
// CHECK-NEXT: | `-CompoundStmt [[ADDR_23:0x[a-z0-9]*]] <col:16, line:29:1>
@@ -80,8 +80,8 @@ int non_equivalent_isa_trait(void);
// CHECK-NEXT: | `-ImplicitCastExpr [[ADDR_37:0x[a-z0-9]*]] <line:15:1> 'int (*)({{.*}})' <FunctionToPointerDecay>
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_5]] <col:1> 'int ({{.*}})' {{.*}}Function [[ADDR_6]] 'also_before[device={kind(any, cpu)}, implementation={dynamic_allocators, vendor(llvm, pgi), extension(match_any)}, user={condition(...)}]' 'int ({{.*}})'
// CHECK-NEXT: |-FunctionDecl [[ADDR_38:0x[a-z0-9]*]] <line:33:1, col:30> col:5 equivalent_isa_trait 'int ({{.*}})'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_39:0x[a-z0-9]*]] <line:32:1, col:61> Implicit device={isa(sse)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_39:0x[a-z0-9]*]] <line:32:1, col:61> Implicit device={isa(sse)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_40:0x[a-z0-9]*]] <col:29> 'int ({{.*}})' {{.*}}Function [[ADDR_22]] 'test' 'int ({{.*}})' non_odr_use_unevaluated
// CHECK-NEXT: `-FunctionDecl [[ADDR_41:0x[a-z0-9]*]] <line:38:1, col:34> col:5 non_equivalent_isa_trait 'int ({{.*}})'
-// CHECK-NEXT: `-OMPDeclareVariantAttr [[ADDR_42:0x[a-z0-9]*]] <line:37:1, col:64> Implicit device={isa(sse2, sse)}
+// CHECK-NEXT: `-attrDetails: OMPDeclareVariantAttr [[ADDR_42:0x[a-z0-9]*]] <line:37:1, col:64> Implicit device={isa(sse2, sse)}
// CHECK-NEXT: `-DeclRefExpr [[ADDR_43:0x[a-z0-9]*]] <col:29> 'int ({{.*}})' {{.*}}Function [[ADDR_22]] 'test' 'int ({{.*}})' non_odr_use_unevaluated
diff --git a/clang/test/AST/ast-dump-openmp-begin-declare-variant_reference.cpp b/clang/test/AST/ast-dump-openmp-begin-declare-variant_reference.cpp
index 1937a5d1c3eb3..9b4d594b9a1c5 100644
--- a/clang/test/AST/ast-dump-openmp-begin-declare-variant_reference.cpp
+++ b/clang/test/AST/ast-dump-openmp-begin-declare-variant_reference.cpp
@@ -107,7 +107,7 @@ int test(float &&f, short &&s) {
// CHECK-NEXT: | | | `-Destructor simple irrelevant trivial needs_implicit
// CHECK-NEXT: | | |-CXXRecordDecl [[ADDR_3:0x[a-z0-9]*]] <col:22, col:29> col:29 implicit struct remove_reference
// CHECK-NEXT: | | `-TypedefDecl [[ADDR_4:0x[a-z0-9]*]] <col:48, col:60> col:60 type '_Tp'
-// CHECK-NEXT: | | `-TemplateTypeParmType [[ADDR_5:0x[a-z0-9]*]] '_Tp' dependent depth 0 index 0
+// CHECK-NEXT: | | `-typeDetails: TemplateTypeParmType [[ADDR_5:0x[a-z0-9]*]] '_Tp' dependent depth 0 index 0
// CHECK-NEXT: | | `-TemplateTypeParm [[ADDR_1]] '_Tp'
// CHECK-NEXT: | |-ClassTemplateSpecializationDecl [[ADDR_6:0x[a-z0-9]*]] <line:6:1, col:73> col:29 struct remove_reference definition
// CHECK-NEXT: | | |-DefinitionData pass_in_registers empty aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor can_const_default_init
@@ -118,13 +118,13 @@ int test(float &&f, short &&s) {
// CHECK-NEXT: | | | |-MoveAssignment exists simple trivial needs_implicit
// CHECK-NEXT: | | | `-Destructor simple irrelevant trivial needs_implicit
// CHECK-NEXT: | | |-TemplateArgument type 'float &'
-// CHECK-NEXT: | | | `-LValueReferenceType [[ADDR_7:0x[a-z0-9]*]] 'float &'
-// CHECK-NEXT: | | | `-BuiltinType [[ADDR_8:0x[a-z0-9]*]] 'float'
+// CHECK-NEXT: | | | `-typeDetails: LValueReferenceType [[ADDR_7:0x[a-z0-9]*]] 'float &'
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType [[ADDR_8:0x[a-z0-9]*]] 'float'
// CHECK-NEXT: | | |-CXXRecordDecl [[ADDR_9:0x[a-z0-9]*]] <col:22, col:29> col:29 implicit struct remove_reference
// CHECK-NEXT: | | `-TypedefDecl [[ADDR_10:0x[a-z0-9]*]] <col:55, col:67> col:67 referenced type 'float'
-// CHECK-NEXT: | | `-SubstTemplateTypeParmType [[ADDR_11:0x[a-z0-9]*]] 'float' sugar class depth 0 index 0 _Tp
+// CHECK-NEXT: | | `-typeDetails: SubstTemplateTypeParmType [[ADDR_11:0x[a-z0-9]*]] 'float' sugar class depth 0 index 0 _Tp
// CHECK-NEXT: | | |-ClassTemplateSpecialization [[ADDR_6]] 'remove_reference'
-// CHECK-NEXT: | | `-BuiltinType [[ADDR_8]] 'float'
+// CHECK-NEXT: | | `-typeDetails: BuiltinType [[ADDR_8]] 'float'
// CHECK-NEXT: | `-ClassTemplateSpecializationDecl [[ADDR_14:0x[a-z0-9]*]] <col:1, col:73> col:29 struct remove_reference definition
// CHECK-NEXT: | |-DefinitionData pass_in_registers empty aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor can_const_default_init
// CHECK-NEXT: | | |-DefaultConstructor exists trivial constexpr needs_implicit defaulted_is_constexpr
@@ -134,13 +134,13 @@ int test(float &&f, short &&s) {
// CHECK-NEXT: | | |-MoveAssignment exists simple trivial needs_implicit
// CHECK-NEXT: | | `-Destructor simple irrelevant trivial needs_implicit
// CHECK-NEXT: | |-TemplateArgument type 'short &'
-// CHECK-NEXT: | | `-LValueReferenceType [[ADDR_15:0x[a-z0-9]*]] 'short &'
-// CHECK-NEXT: | | `-BuiltinType [[ADDR_16:0x[a-z0-9]*]] 'short'
+// CHECK-NEXT: | | `-typeDetails: LValueReferenceType [[ADDR_15:0x[a-z0-9]*]] 'short &'
+// CHECK-NEXT: | | `-typeDetails: BuiltinType [[ADDR_16:0x[a-z0-9]*]] 'short'
// CHECK-NEXT: | |-CXXRecordDecl [[ADDR_17:0x[a-z0-9]*]] <col:22, col:29> col:29 implicit struct remove_reference
// CHECK-NEXT: | `-TypedefDecl [[ADDR_18:0x[a-z0-9]*]] <col:55, col:67> col:67 referenced type 'short'
-// CHECK-NEXT: | `-SubstTemplateTypeParmType [[ADDR_19:0x[a-z0-9]*]] 'short' sugar class depth 0 index 0 _Tp
+// CHECK-NEXT: | `-typeDetails: SubstTemplateTypeParmType [[ADDR_19:0x[a-z0-9]*]] 'short' sugar class depth 0 index 0 _Tp
// CHECK-NEXT: | |-ClassTemplateSpecialization [[ADDR_14]] 'remove_reference'
-// CHECK-NEXT: | `-BuiltinType [[ADDR_16]] 'short'
+// CHECK-NEXT: | `-typeDetails: BuiltinType [[ADDR_16]] 'short'
// CHECK-NEXT: |-ClassTemplatePartialSpecializationDecl [[ADDR_20:0x[a-z0-9]*]] <col:1, col:73> col:29 struct remove_reference definition
// CHECK-NEXT: | |-DefinitionData empty aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor can_const_default_init
// CHECK-NEXT: | | |-DefaultConstructor exists trivial constexpr needs_implicit defaulted_is_constexpr
@@ -150,12 +150,12 @@ int test(float &&f, short &&s) {
// CHECK-NEXT: | | |-MoveAssignment exists simple trivial needs_implicit
// CHECK-NEXT: | | `-Destructor simple irrelevant trivial needs_implicit
// CHECK-NEXT: | |-TemplateArgument type 'type-parameter-0-0 &'
-// CHECK-NEXT: | | `-LValueReferenceType [[ADDR_21:0x[a-z0-9]*]] 'type-parameter-0-0 &' dependent
-// CHECK-NEXT: | | `-TemplateTypeParmType [[ADDR_22:0x[a-z0-9]*]] 'type-parameter-0-0' dependent depth 0 index 0
+// CHECK-NEXT: | | `-typeDetails: LValueReferenceType [[ADDR_21:0x[a-z0-9]*]] 'type-parameter-0-0 &' dependent
+// CHECK-NEXT: | | `-typeDetails: TemplateTypeParmType [[ADDR_22:0x[a-z0-9]*]] 'type-parameter-0-0' dependent depth 0 index 0
// CHECK-NEXT: | |-TemplateTypeParmDecl [[ADDR_13:0x[a-z0-9]*]] <col:11, col:17> col:17 referenced class depth 0 index 0 _Tp
// CHECK-NEXT: | |-CXXRecordDecl [[ADDR_23:0x[a-z0-9]*]] <col:22, col:29> col:29 implicit struct remove_reference
// CHECK-NEXT: | `-TypedefDecl [[ADDR_24:0x[a-z0-9]*]] <col:55, col:67> col:67 type '_Tp'
-// CHECK-NEXT: | `-TemplateTypeParmType [[ADDR_12:0x[a-z0-9]*]] '_Tp' dependent depth 0 index 0
+// CHECK-NEXT: | `-typeDetails: TemplateTypeParmType [[ADDR_12:0x[a-z0-9]*]] '_Tp' dependent depth 0 index 0
// CHECK-NEXT: | `-TemplateTypeParm [[ADDR_13]] '_Tp'
// CHECK-NEXT: |-ClassTemplatePartialSpecializationDecl [[ADDR_25:0x[a-z0-9]*]] <line:7:1, col:74> col:29 struct remove_reference definition
// CHECK-NEXT: | |-DefinitionData empty aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor can_const_default_init
@@ -166,73 +166,73 @@ int test(float &&f, short &&s) {
// CHECK-NEXT: | | |-MoveAssignment exists simple trivial needs_implicit
// CHECK-NEXT: | | `-Destructor simple irrelevant trivial needs_implicit
// CHECK-NEXT: | |-TemplateArgument type 'type-parameter-0-0 &&'
-// CHECK-NEXT: | | `-RValueReferenceType [[ADDR_26:0x[a-z0-9]*]] 'type-parameter-0-0 &&' dependent
-// CHECK-NEXT: | | `-TemplateTypeParmType [[ADDR_22]] 'type-parameter-0-0' dependent depth 0 index 0
+// CHECK-NEXT: | | `-typeDetails: RValueReferenceType [[ADDR_26:0x[a-z0-9]*]] 'type-parameter-0-0 &&' dependent
+// CHECK-NEXT: | | `-typeDetails: TemplateTypeParmType [[ADDR_22]] 'type-parameter-0-0' dependent depth 0 index 0
// CHECK-NEXT: | |-TemplateTypeParmDecl [[ADDR_27:0x[a-z0-9]*]] <col:11, col:17> col:17 referenced class depth 0 index 0 _Tp
// CHECK-NEXT: | |-CXXRecordDecl [[ADDR_28:0x[a-z0-9]*]] <col:22, col:29> col:29 implicit struct remove_reference
// CHECK-NEXT: | `-TypedefDecl [[ADDR_29:0x[a-z0-9]*]] <col:56, col:68> col:68 type '_Tp'
-// CHECK-NEXT: | `-TemplateTypeParmType [[ADDR_30:0x[a-z0-9]*]] '_Tp' dependent depth 0 index 0
+// CHECK-NEXT: | `-typeDetails: TemplateTypeParmType [[ADDR_30:0x[a-z0-9]*]] '_Tp' dependent depth 0 index 0
// CHECK-NEXT: | `-TemplateTypeParm [[ADDR_27]] '_Tp'
// CHECK-NEXT: |-FunctionTemplateDecl [[ADDR_31:0x[a-z0-9]*]] <line:9:1, line:14:1> line:11:1 move
// CHECK-NEXT: | |-TemplateTypeParmDecl [[ADDR_32:0x[a-z0-9]*]] <line:9:11, col:17> col:17 referenced class depth 0 index 0 _Tp
// CHECK-NEXT: | |-FunctionDecl [[ADDR_33:0x[a-z0-9]*]] <line:10:1, line:14:1> line:11:1 move 'typename remove_reference<_Tp>::type &&(_Tp &&)' inline
// CHECK-NEXT: | | |-ParmVarDecl [[ADDR_34:0x[a-z0-9]*]] <col:6, col:12> col:12 referenced __t '_Tp &&'
-// CHECK-NEXT: | | `-CompoundStmt [[ADDR_35:0x[a-z0-9]*]] <col:17, line:14:1>
+// CHECK: | | `-CompoundStmt [[ADDR_35:0x[a-z0-9]*]] <col:17, line:14:1>
// CHECK-NEXT: | | |-DeclStmt [[ADDR_36:0x[a-z0-9]*]] <line:12:3, col:51>
// CHECK-NEXT: | | | `-TypedefDecl [[ADDR_37:0x[a-z0-9]*]] <col:3, col:48> col:48 referenced _Up 'typename remove_reference<_Tp>::type'
-// CHECK-NEXT: | | | `-DependentNameType [[ADDR_38:0x[a-z0-9]*]] 'typename remove_reference<_Tp>::type' dependent
+// CHECK-NEXT: | | | `-typeDetails: DependentNameType [[ADDR_38:0x[a-z0-9]*]] 'typename remove_reference<_Tp>::type' dependent
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_39:0x[a-z0-9]*]] <line:13:3, col:33>
// CHECK-NEXT: | | `-CXXStaticCastExpr [[ADDR_40:0x[a-z0-9]*]] <col:10, col:33> '_Up':'typename remove_reference<_Tp>::type' xvalue static_cast<_Up &&> <Dependent>
// CHECK-NEXT: | | `-DeclRefExpr [[ADDR_41:0x[a-z0-9]*]] <col:30> '_Tp' {{.*}}ParmVar [[ADDR_34]] '__t' '_Tp &&'
// CHECK-NEXT: | |-FunctionDecl [[ADDR_42:0x[a-z0-9]*]] <line:10:1, line:14:1> line:11:1 used move 'typename remove_reference<float &>::type &&(float &)' implicit_instantiation inline
// CHECK-NEXT: | | |-TemplateArgument type 'float &'
-// CHECK-NEXT: | | | `-LValueReferenceType [[ADDR_7]] 'float &'
-// CHECK-NEXT: | | | `-BuiltinType [[ADDR_8]] 'float'
+// CHECK-NEXT: | | | `-typeDetails: LValueReferenceType [[ADDR_7]] 'float &'
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType [[ADDR_8]] 'float'
// CHECK-NEXT: | | |-ParmVarDecl [[ADDR_43:0x[a-z0-9]*]] <col:6, col:12> col:12 used __t 'float &'
-// CHECK-NEXT: | | `-CompoundStmt [[ADDR_44:0x[a-z0-9]*]] <col:17, line:14:1>
+// CHECK: | | `-CompoundStmt [[ADDR_44:0x[a-z0-9]*]] <col:17, line:14:1>
// CHECK-NEXT: | | |-DeclStmt [[ADDR_45:0x[a-z0-9]*]] <line:12:3, col:51>
// CHECK-NEXT: | | | `-TypedefDecl [[ADDR_46:0x[a-z0-9]*]] <col:3, col:48> col:48 referenced _Up 'typename remove_reference<float &>::type':'float'
-// CHECK-NEXT: | | | `-ElaboratedType [[ADDR_47:0x[a-z0-9]*]] 'typename remove_reference<float &>::type' sugar
-// CHECK-NEXT: | | | `-TypedefType [[ADDR_48:0x[a-z0-9]*]] 'remove_reference<float &>::type' sugar
+// CHECK-NEXT: | | | `-typeDetails: ElaboratedType [[ADDR_47:0x[a-z0-9]*]] 'typename remove_reference<float &>::type' sugar
+// CHECK-NEXT: | | | `-typeDetails: TypedefType [[ADDR_48:0x[a-z0-9]*]] 'remove_reference<float &>::type' sugar
// CHECK-NEXT: | | | |-Typedef [[ADDR_10]] 'type'
-// CHECK-NEXT: | | | `-SubstTemplateTypeParmType [[ADDR_11]] 'float' sugar class depth 0 index 0 _Tp
+// CHECK-NEXT: | | | `-typeDetails: SubstTemplateTypeParmType [[ADDR_11]] 'float' sugar class depth 0 index 0 _Tp
// CHECK-NEXT: | | | |-ClassTemplateSpecialization [[ADDR_6]] 'remove_reference'
-// CHECK-NEXT: | | | `-BuiltinType [[ADDR_8]] 'float'
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType [[ADDR_8]] 'float'
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_49:0x[a-z0-9]*]] <line:13:3, col:33>
// CHECK-NEXT: | | `-CXXStaticCastExpr [[ADDR_50:0x[a-z0-9]*]] <col:10, col:33> '_Up':'float' xvalue static_cast<_Up &&> <NoOp>
// CHECK-NEXT: | | `-DeclRefExpr [[ADDR_51:0x[a-z0-9]*]] <col:30> 'float' {{.*}}ParmVar [[ADDR_43]] '__t' 'float &'
// CHECK-NEXT: | `-FunctionDecl [[ADDR_52:0x[a-z0-9]*]] <line:10:1, line:14:1> line:11:1 used move 'typename remove_reference<short &>::type &&(short &)' implicit_instantiation inline
// CHECK-NEXT: | |-TemplateArgument type 'short &'
-// CHECK-NEXT: | | `-LValueReferenceType [[ADDR_15]] 'short &'
-// CHECK-NEXT: | | `-BuiltinType [[ADDR_16]] 'short'
+// CHECK-NEXT: | | `-typeDetails: LValueReferenceType [[ADDR_15]] 'short &'
+// CHECK-NEXT: | | `-typeDetails: BuiltinType [[ADDR_16]] 'short'
// CHECK-NEXT: | |-ParmVarDecl [[ADDR_53:0x[a-z0-9]*]] <col:6, col:12> col:12 used __t 'short &'
-// CHECK-NEXT: | `-CompoundStmt [[ADDR_54:0x[a-z0-9]*]] <col:17, line:14:1>
+// CHECK: | `-CompoundStmt [[ADDR_54:0x[a-z0-9]*]] <col:17, line:14:1>
// CHECK-NEXT: | |-DeclStmt [[ADDR_55:0x[a-z0-9]*]] <line:12:3, col:51>
// CHECK-NEXT: | | `-TypedefDecl [[ADDR_56:0x[a-z0-9]*]] <col:3, col:48> col:48 referenced _Up 'typename remove_reference<short &>::type':'short'
-// CHECK-NEXT: | | `-ElaboratedType [[ADDR_57:0x[a-z0-9]*]] 'typename remove_reference<short &>::type' sugar
-// CHECK-NEXT: | | `-TypedefType [[ADDR_58:0x[a-z0-9]*]] 'remove_reference<short &>::type' sugar
+// CHECK-NEXT: | | `-typeDetails: ElaboratedType [[ADDR_57:0x[a-z0-9]*]] 'typename remove_reference<short &>::type' sugar
+// CHECK-NEXT: | | `-typeDetails: TypedefType [[ADDR_58:0x[a-z0-9]*]] 'remove_reference<short &>::type' sugar
// CHECK-NEXT: | | |-Typedef [[ADDR_18]] 'type'
-// CHECK-NEXT: | | `-SubstTemplateTypeParmType [[ADDR_19]] 'short' sugar class depth 0 index 0 _Tp
+// CHECK-NEXT: | | `-typeDetails: SubstTemplateTypeParmType [[ADDR_19]] 'short' sugar class depth 0 index 0 _Tp
// CHECK-NEXT: | | |-ClassTemplateSpecialization [[ADDR_14]] 'remove_reference'
-// CHECK-NEXT: | | `-BuiltinType [[ADDR_16]] 'short'
+// CHECK-NEXT: | | `-typeDetails: BuiltinType [[ADDR_16]] 'short'
// CHECK-NEXT: | `-ReturnStmt [[ADDR_59:0x[a-z0-9]*]] <line:13:3, col:33>
// CHECK-NEXT: | `-CXXStaticCastExpr [[ADDR_60:0x[a-z0-9]*]] <col:10, col:33> '_Up':'short' xvalue static_cast<_Up &&> <NoOp>
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_61:0x[a-z0-9]*]] <col:30> 'short' {{.*}}ParmVar [[ADDR_53]] '__t' 'short &'
// CHECK-NEXT: |-VarDecl [[ADDR_62:0x[a-z0-9]*]] <line:17:1, col:5> col:5 used Good 'int'
-// CHECK-NEXT: |-VarDecl [[ADDR_63:0x[a-z0-9]*]] <col:1, col:11> col:11 used Bad 'int'
-// CHECK-NEXT: |-FunctionDecl [[ADDR_64:0x[a-z0-9]*]] <line:18:1, line:20:1> line:18:6 used also_before 'int &({{.*}})'
+// CHECK: |-VarDecl [[ADDR_63:0x[a-z0-9]*]] <col:1, col:11> col:11 used Bad 'int'
+// CHECK: |-FunctionDecl [[ADDR_64:0x[a-z0-9]*]] <line:18:1, line:20:1> line:18:6 used also_before 'int &({{.*}})'
// CHECK-NEXT: | |-CompoundStmt [[ADDR_65:0x[a-z0-9]*]] <col:20, line:20:1>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_66:0x[a-z0-9]*]] <line:19:3, col:10>
// CHECK-NEXT: | | `-DeclRefExpr [[ADDR_67:0x[a-z0-9]*]] <col:10> 'int' {{.*}}Var [[ADDR_63]] 'Bad' 'int'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_68:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(score(0): llvm)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_68:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(score(0): llvm)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_69:0x[a-z0-9]*]] <line:50:1> 'int &({{.*}})' {{.*}}Function [[ADDR_70:0x[a-z0-9]*]] 'also_before[implementation={vendor(llvm)}]' 'int &({{.*}})'
// CHECK-NEXT: |-FunctionDecl [[ADDR_71:0x[a-z0-9]*]] <line:21:1, line:23:1> line:21:5 used also_before 'int (float &&)'
// CHECK-NEXT: | |-ParmVarDecl [[ADDR_72:0x[a-z0-9]*]] <col:17, col:23> col:25 'float &&'
-// CHECK-NEXT: | `-CompoundStmt [[ADDR_73:0x[a-z0-9]*]] <col:27, line:23:1>
+// CHECK: | `-CompoundStmt [[ADDR_73:0x[a-z0-9]*]] <col:27, line:23:1>
// CHECK-NEXT: | `-ReturnStmt [[ADDR_74:0x[a-z0-9]*]] <line:22:3, col:10>
// CHECK-NEXT: | `-IntegerLiteral [[ADDR_75:0x[a-z0-9]*]] <col:10> 'int' 0
// CHECK-NEXT: |-FunctionDecl [[ADDR_76:0x[a-z0-9]*]] <line:27:1, col:20> col:5 implicit also_after 'int ({{.*}})'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_77:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(score(100): llvm)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_77:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(score(100): llvm)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_78:0x[a-z0-9]*]] <col:1> 'int ({{.*}})' {{.*}}Function [[ADDR_79:0x[a-z0-9]*]] 'also_after[implementation={vendor(llvm)}]' 'int ({{.*}})'
// CHECK-NEXT: |-FunctionDecl [[ADDR_79]] <col:1, line:29:1> line:27:1 also_after[implementation={vendor(llvm)}] 'int ({{.*}})'
// CHECK-NEXT: | `-CompoundStmt [[ADDR_80:0x[a-z0-9]*]] <col:22, line:29:1>
@@ -240,47 +240,47 @@ int test(float &&f, short &&s) {
// CHECK-NEXT: | `-IntegerLiteral [[ADDR_82:0x[a-z0-9]*]] <col:10> 'int' 1
// CHECK-NEXT: |-FunctionDecl [[ADDR_83:0x[a-z0-9]*]] <line:30:1, col:21> col:5 implicit also_after 'int (int &)'
// CHECK-NEXT: | |-ParmVarDecl [[ADDR_84:0x[a-z0-9]*]] <col:16, col:20> col:21 'int &'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_85:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(score(100): llvm)}
+// CHECK: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_85:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(score(100): llvm)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_86:0x[a-z0-9]*]] <col:1> 'int (int &)' {{.*}}Function [[ADDR_87:0x[a-z0-9]*]] 'also_after[implementation={vendor(llvm)}]' 'int (int &)'
// CHECK-NEXT: |-FunctionDecl [[ADDR_87]] <col:1, line:32:1> line:30:1 also_after[implementation={vendor(llvm)}] 'int (int &)'
// CHECK-NEXT: | |-ParmVarDecl [[ADDR_84]] <col:16, col:20> col:21 'int &'
-// CHECK-NEXT: | `-CompoundStmt [[ADDR_88:0x[a-z0-9]*]] <col:23, line:32:1>
+// CHECK: | `-CompoundStmt [[ADDR_88:0x[a-z0-9]*]] <col:23, line:32:1>
// CHECK-NEXT: | `-ReturnStmt [[ADDR_89:0x[a-z0-9]*]] <line:31:3, col:10>
// CHECK-NEXT: | `-IntegerLiteral [[ADDR_90:0x[a-z0-9]*]] <col:10> 'int' 2
// CHECK-NEXT: |-FunctionDecl [[ADDR_91:0x[a-z0-9]*]] <line:34:1, col:24> col:5 implicit used also_after 'int (double &)'
// CHECK-NEXT: | |-ParmVarDecl [[ADDR_92:0x[a-z0-9]*]] <col:16, col:23> col:24 'double &'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_93:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(score(100): llvm)}
+// CHECK: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_93:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(score(100): llvm)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_94:0x[a-z0-9]*]] <col:1> 'int (double &)' {{.*}}Function [[ADDR_95:0x[a-z0-9]*]] 'also_after[implementation={vendor(llvm)}]' 'int (double &)'
// CHECK-NEXT: |-FunctionDecl [[ADDR_95]] <col:1, line:36:1> line:34:1 also_after[implementation={vendor(llvm)}] 'int (double &)'
// CHECK-NEXT: | |-ParmVarDecl [[ADDR_92]] <col:16, col:23> col:24 'double &'
-// CHECK-NEXT: | `-CompoundStmt [[ADDR_96:0x[a-z0-9]*]] <col:26, line:36:1>
+// CHECK: | `-CompoundStmt [[ADDR_96:0x[a-z0-9]*]] <col:26, line:36:1>
// CHECK-NEXT: | `-ReturnStmt [[ADDR_97:0x[a-z0-9]*]] <line:35:3, col:10>
// CHECK-NEXT: | `-IntegerLiteral [[ADDR_98:0x[a-z0-9]*]] <col:10> 'int' 0
// CHECK-NEXT: |-FunctionDecl [[ADDR_99:0x[a-z0-9]*]] <line:37:1, col:25> col:5 implicit also_after 'int (double &&)'
// CHECK-NEXT: | |-ParmVarDecl [[ADDR_100:0x[a-z0-9]*]] <col:16, col:23> col:25 'double &&'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_101:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(score(100): llvm)}
+// CHECK: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_101:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(score(100): llvm)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_102:0x[a-z0-9]*]] <col:1> 'int (double &&)' {{.*}}Function [[ADDR_103:0x[a-z0-9]*]] 'also_after[implementation={vendor(llvm)}]' 'int (double &&)'
// CHECK-NEXT: |-FunctionDecl [[ADDR_103]] <col:1, line:39:1> line:37:1 also_after[implementation={vendor(llvm)}] 'int (double &&)'
// CHECK-NEXT: | |-ParmVarDecl [[ADDR_100]] <col:16, col:23> col:25 'double &&'
-// CHECK-NEXT: | `-CompoundStmt [[ADDR_104:0x[a-z0-9]*]] <col:27, line:39:1>
+// CHECK: | `-CompoundStmt [[ADDR_104:0x[a-z0-9]*]] <col:27, line:39:1>
// CHECK-NEXT: | `-ReturnStmt [[ADDR_105:0x[a-z0-9]*]] <line:38:3, col:10>
// CHECK-NEXT: | `-IntegerLiteral [[ADDR_106:0x[a-z0-9]*]] <col:10> 'int' 3
// CHECK-NEXT: |-FunctionDecl [[ADDR_107:0x[a-z0-9]*]] <line:40:1, col:23> col:5 implicit also_after 'int (short &)'
// CHECK-NEXT: | |-ParmVarDecl [[ADDR_108:0x[a-z0-9]*]] <col:16, col:22> col:23 'short &'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_109:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(score(100): llvm)}
+// CHECK: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_109:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(score(100): llvm)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_110:0x[a-z0-9]*]] <col:1> 'int (short &)' {{.*}}Function [[ADDR_111:0x[a-z0-9]*]] 'also_after[implementation={vendor(llvm)}]' 'int (short &)'
// CHECK-NEXT: |-FunctionDecl [[ADDR_111]] <col:1, line:42:1> line:40:1 also_after[implementation={vendor(llvm)}] 'int (short &)'
// CHECK-NEXT: | |-ParmVarDecl [[ADDR_108]] <col:16, col:22> col:23 'short &'
-// CHECK-NEXT: | `-CompoundStmt [[ADDR_112:0x[a-z0-9]*]] <col:25, line:42:1>
+// CHECK: | `-CompoundStmt [[ADDR_112:0x[a-z0-9]*]] <col:25, line:42:1>
// CHECK-NEXT: | `-ReturnStmt [[ADDR_113:0x[a-z0-9]*]] <line:41:3, col:10>
// CHECK-NEXT: | `-IntegerLiteral [[ADDR_114:0x[a-z0-9]*]] <col:10> 'int' 5
// CHECK-NEXT: |-FunctionDecl [[ADDR_115:0x[a-z0-9]*]] <line:43:1, col:24> col:5 implicit used also_after 'int (short &&)'
// CHECK-NEXT: | |-ParmVarDecl [[ADDR_116:0x[a-z0-9]*]] <col:16, col:22> col:24 'short &&'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_117:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(score(100): llvm)}
+// CHECK: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_117:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(score(100): llvm)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_118:0x[a-z0-9]*]] <col:1> 'int (short &&)' {{.*}}Function [[ADDR_119:0x[a-z0-9]*]] 'also_after[implementation={vendor(llvm)}]' 'int (short &&)'
// CHECK-NEXT: |-FunctionDecl [[ADDR_119]] <col:1, line:45:1> line:43:1 also_after[implementation={vendor(llvm)}] 'int (short &&)'
// CHECK-NEXT: | |-ParmVarDecl [[ADDR_116]] <col:16, col:22> col:24 'short &&'
-// CHECK-NEXT: | `-CompoundStmt [[ADDR_120:0x[a-z0-9]*]] <col:26, line:45:1>
+// CHECK: | `-CompoundStmt [[ADDR_120:0x[a-z0-9]*]] <col:26, line:45:1>
// CHECK-NEXT: | `-ReturnStmt [[ADDR_121:0x[a-z0-9]*]] <line:44:3, col:10>
// CHECK-NEXT: | `-IntegerLiteral [[ADDR_122:0x[a-z0-9]*]] <col:10> 'int' 0
// CHECK-NEXT: |-FunctionDecl [[ADDR_70]] <line:50:1, line:52:1> line:50:1 also_before[implementation={vendor(llvm)}] 'int &({{.*}})'
@@ -289,43 +289,43 @@ int test(float &&f, short &&s) {
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_125:0x[a-z0-9]*]] <col:10> 'int' {{.*}}Var [[ADDR_62]] 'Good' 'int'
// CHECK-NEXT: |-FunctionDecl [[ADDR_126:0x[a-z0-9]*]] <line:54:1, col:24> col:5 implicit also_before 'int (float &)'
// CHECK-NEXT: | |-ParmVarDecl [[ADDR_127:0x[a-z0-9]*]] <col:17, col:23> col:24 'float &'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_128:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(score(0): llvm)}
+// CHECK: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_128:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(score(0): llvm)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_129:0x[a-z0-9]*]] <col:1> 'int (float &)' {{.*}}Function [[ADDR_130:0x[a-z0-9]*]] 'also_before[implementation={vendor(llvm)}]' 'int (float &)'
// CHECK-NEXT: |-FunctionDecl [[ADDR_130]] <col:1, line:56:1> line:54:1 also_before[implementation={vendor(llvm)}] 'int (float &)'
// CHECK-NEXT: | |-ParmVarDecl [[ADDR_127]] <col:17, col:23> col:24 'float &'
-// CHECK-NEXT: | `-CompoundStmt [[ADDR_131:0x[a-z0-9]*]] <col:26, line:56:1>
+// CHECK: | `-CompoundStmt [[ADDR_131:0x[a-z0-9]*]] <col:26, line:56:1>
// CHECK-NEXT: | `-ReturnStmt [[ADDR_132:0x[a-z0-9]*]] <line:55:3, col:10>
// CHECK-NEXT: | `-IntegerLiteral [[ADDR_133:0x[a-z0-9]*]] <col:10> 'int' 6
// CHECK-NEXT: |-FunctionDecl [[ADDR_134:0x[a-z0-9]*]] prev [[ADDR_76]] <line:59:1, line:61:1> line:59:5 also_after 'int ({{.*}})'
// CHECK-NEXT: | |-CompoundStmt [[ADDR_135:0x[a-z0-9]*]] <col:22, line:61:1>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_136:0x[a-z0-9]*]] <line:60:3, col:10>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_137:0x[a-z0-9]*]] <col:10> 'int' 7
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_138:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(score(100): llvm)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_138:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(score(100): llvm)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_78]] <line:27:1> 'int ({{.*}})' {{.*}}Function [[ADDR_79]] 'also_after[implementation={vendor(llvm)}]' 'int ({{.*}})'
// CHECK-NEXT: |-FunctionDecl [[ADDR_139:0x[a-z0-9]*]] <line:62:1, line:64:1> line:62:5 also_after 'int (int)'
// CHECK-NEXT: | |-ParmVarDecl [[ADDR_140:0x[a-z0-9]*]] <col:16> col:19 'int'
-// CHECK-NEXT: | `-CompoundStmt [[ADDR_141:0x[a-z0-9]*]] <col:21, line:64:1>
+// CHECK: | `-CompoundStmt [[ADDR_141:0x[a-z0-9]*]] <col:21, line:64:1>
// CHECK-NEXT: | `-ReturnStmt [[ADDR_142:0x[a-z0-9]*]] <line:63:3, col:10>
// CHECK-NEXT: | `-IntegerLiteral [[ADDR_143:0x[a-z0-9]*]] <col:10> 'int' 8
// CHECK-NEXT: |-FunctionDecl [[ADDR_144:0x[a-z0-9]*]] prev [[ADDR_91]] <line:65:1, line:67:1> line:65:5 used also_after 'int (double &)'
// CHECK-NEXT: | |-ParmVarDecl [[ADDR_145:0x[a-z0-9]*]] <col:16, col:23> col:24 'double &'
-// CHECK-NEXT: | |-CompoundStmt [[ADDR_146:0x[a-z0-9]*]] <col:26, line:67:1>
+// CHECK: | |-CompoundStmt [[ADDR_146:0x[a-z0-9]*]] <col:26, line:67:1>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_147:0x[a-z0-9]*]] <line:66:3, col:10>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_148:0x[a-z0-9]*]] <col:10> 'int' 9
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_149:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(score(100): llvm)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_149:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(score(100): llvm)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_94]] <line:34:1> 'int (double &)' {{.*}}Function [[ADDR_95]] 'also_after[implementation={vendor(llvm)}]' 'int (double &)'
// CHECK-NEXT: |-FunctionDecl [[ADDR_150:0x[a-z0-9]*]] prev [[ADDR_115]] <line:68:1, line:70:1> line:68:5 used also_after 'int (short &&)'
// CHECK-NEXT: | |-ParmVarDecl [[ADDR_151:0x[a-z0-9]*]] <col:16, col:22> col:24 'short &&'
-// CHECK-NEXT: | |-CompoundStmt [[ADDR_152:0x[a-z0-9]*]] <col:26, line:70:1>
+// CHECK: | |-CompoundStmt [[ADDR_152:0x[a-z0-9]*]] <col:26, line:70:1>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_153:0x[a-z0-9]*]] <line:69:3, col:10>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_154:0x[a-z0-9]*]] <col:10> 'int' 10
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_155:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(score(100): llvm)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_155:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(score(100): llvm)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_118]] <line:43:1> 'int (short &&)' {{.*}}Function [[ADDR_119]] 'also_after[implementation={vendor(llvm)}]' 'int (short &&)'
// CHECK-NEXT: |-FunctionDecl [[ADDR_156:0x[a-z0-9]*]] <line:72:1, line:76:1> line:72:5 used test1 'int ({{.*}})'
// CHECK-NEXT: | `-CompoundStmt [[ADDR_157:0x[a-z0-9]*]] <col:13, line:76:1>
// CHECK-NEXT: | |-DeclStmt [[ADDR_158:0x[a-z0-9]*]] <line:74:3, col:11>
// CHECK-NEXT: | | `-VarDecl [[ADDR_159:0x[a-z0-9]*]] <col:3, col:10> col:10 used d 'double'
-// CHECK-NEXT: | `-ReturnStmt [[ADDR_160:0x[a-z0-9]*]] <line:75:3, col:22>
+// CHECK: | `-ReturnStmt [[ADDR_160:0x[a-z0-9]*]] <line:75:3, col:22>
// CHECK-NEXT: | `-PseudoObjectExpr [[ADDR_161:0x[a-z0-9]*]] <col:10, col:22> 'int'
// CHECK-NEXT: | |-CallExpr [[ADDR_162:0x[a-z0-9]*]] <col:10, col:22> 'int'
// CHECK-NEXT: | | |-ImplicitCastExpr [[ADDR_163:0x[a-z0-9]*]] <col:10> 'int (*)(double &)' <FunctionToPointerDecay>
@@ -352,7 +352,7 @@ int test(float &&f, short &&s) {
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_181:0x[a-z0-9]*]] <col:29> 'int' {{.*}}Var [[ADDR_62]] 'Good' 'int'
// CHECK-NEXT: |-FunctionDecl [[ADDR_182:0x[a-z0-9]*]] <line:83:1, line:86:1> line:83:5 used test3 'int (float &&)'
// CHECK-NEXT: | |-ParmVarDecl [[ADDR_183:0x[a-z0-9]*]] <col:11, col:19> col:19 used f 'float &&'
-// CHECK-NEXT: | `-CompoundStmt [[ADDR_184:0x[a-z0-9]*]] <col:22, line:86:1>
+// CHECK: | `-CompoundStmt [[ADDR_184:0x[a-z0-9]*]] <col:22, line:86:1>
// CHECK-NEXT: | `-ReturnStmt [[ADDR_185:0x[a-z0-9]*]] <line:85:3, col:29>
// CHECK-NEXT: | `-CallExpr [[ADDR_186:0x[a-z0-9]*]] <col:10, col:29> 'int'
// CHECK-NEXT: | |-ImplicitCastExpr [[ADDR_187:0x[a-z0-9]*]] <col:10> 'int (*)(float &&)' <FunctionToPointerDecay>
@@ -363,7 +363,7 @@ int test(float &&f, short &&s) {
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_192:0x[a-z0-9]*]] <col:27> 'float' {{.*}}ParmVar [[ADDR_183]] 'f' 'float &&'
// CHECK-NEXT: |-FunctionDecl [[ADDR_193:0x[a-z0-9]*]] <line:88:1, line:91:1> line:88:5 used test4 'int (short &&)'
// CHECK-NEXT: | |-ParmVarDecl [[ADDR_194:0x[a-z0-9]*]] <col:11, col:19> col:19 used s 'short &&'
-// CHECK-NEXT: | `-CompoundStmt [[ADDR_195:0x[a-z0-9]*]] <col:22, line:91:1>
+// CHECK: | `-CompoundStmt [[ADDR_195:0x[a-z0-9]*]] <col:22, line:91:1>
// CHECK-NEXT: | `-ReturnStmt [[ADDR_196:0x[a-z0-9]*]] <line:90:3, col:28>
// CHECK-NEXT: | `-PseudoObjectExpr [[ADDR_197:0x[a-z0-9]*]] <col:10, col:28> 'int'
// CHECK-NEXT: | |-CallExpr [[ADDR_198:0x[a-z0-9]*]] <col:10, col:28> 'int'
@@ -382,8 +382,8 @@ int test(float &&f, short &&s) {
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_204]] <col:26> 'short' {{.*}}ParmVar [[ADDR_194]] 's' 'short &&'
// CHECK-NEXT: `-FunctionDecl [[ADDR_207:0x[a-z0-9]*]] <line:93:1, line:96:1> line:93:5 test 'int (float &&, short &&)'
// CHECK-NEXT: |-ParmVarDecl [[ADDR_208:0x[a-z0-9]*]] <col:10, col:18> col:18 used f 'float &&'
-// CHECK-NEXT: |-ParmVarDecl [[ADDR_209:0x[a-z0-9]*]] <col:21, col:29> col:29 used s 'short &&'
-// CHECK-NEXT: `-CompoundStmt [[ADDR_210:0x[a-z0-9]*]] <col:32, line:96:1>
+// CHECK: |-ParmVarDecl [[ADDR_209:0x[a-z0-9]*]] <col:21, col:29> col:29 used s 'short &&'
+// CHECK: `-CompoundStmt [[ADDR_210:0x[a-z0-9]*]] <col:32, line:96:1>
// CHECK-NEXT: `-ReturnStmt [[ADDR_211:0x[a-z0-9]*]] <line:95:3, col:60>
// CHECK-NEXT: `-BinaryOperator [[ADDR_212:0x[a-z0-9]*]] <col:10, col:60> 'int' '+'
// CHECK-NEXT: |-BinaryOperator [[ADDR_213:0x[a-z0-9]*]] <col:10, col:43> 'int' '+'
diff --git a/clang/test/AST/ast-dump-openmp-begin-declare-variant_template_1.cpp b/clang/test/AST/ast-dump-openmp-begin-declare-variant_template_1.cpp
index 0dfed6ffa240d..da31ed2aaa357 100644
--- a/clang/test/AST/ast-dump-openmp-begin-declare-variant_template_1.cpp
+++ b/clang/test/AST/ast-dump-openmp-begin-declare-variant_template_1.cpp
@@ -56,10 +56,10 @@ int test() {
// CHECK-NEXT: | |-CompoundStmt [[ADDR_1:0x[a-z0-9]*]] <col:19, line:7:1>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_2:0x[a-z0-9]*]] <line:6:3, col:10>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_3:0x[a-z0-9]*]] <col:10> 'int' 1
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_4:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(score(0): llvm)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_4:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(score(0): llvm)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_5:0x[a-z0-9]*]] <line:21:1> 'int ({{.*}})' Function [[ADDR_6:0x[a-z0-9]*]] 'also_before[implementation={vendor(llvm)}]' 'int ({{.*}})'
// CHECK-NEXT: |-FunctionDecl [[ADDR_7:0x[a-z0-9]*]] <line:10:1, col:20> col:5 implicit also_after 'int ({{.*}})'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_8:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(score(100): llvm)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_8:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(score(100): llvm)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_9:0x[a-z0-9]*]] <col:1> 'int ({{.*}})' Function [[ADDR_10:0x[a-z0-9]*]] 'also_after[implementation={vendor(llvm)}]' 'int ({{.*}})'
// CHECK-NEXT: |-FunctionDecl [[ADDR_10]] <col:1, line:12:1> line:10:1 also_after[implementation={vendor(llvm)}] 'int ({{.*}})'
// CHECK-NEXT: | `-CompoundStmt [[ADDR_11:0x[a-z0-9]*]] <col:22, line:12:1>
@@ -67,20 +67,20 @@ int test() {
// CHECK-NEXT: | `-IntegerLiteral [[ADDR_13:0x[a-z0-9]*]] <col:10> 'int' 2
// CHECK-NEXT: |-FunctionDecl [[ADDR_14:0x[a-z0-9]*]] <line:13:1, col:19> col:5 implicit also_after 'int (int)'
// CHECK-NEXT: | |-ParmVarDecl [[ADDR_15:0x[a-z0-9]*]] <col:16> col:19 'int'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_16:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(score(100): llvm)}
+// CHECK: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_16:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(score(100): llvm)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_17:0x[a-z0-9]*]] <col:1> 'int (int)' Function [[ADDR_18:0x[a-z0-9]*]] 'also_after[implementation={vendor(llvm)}]' 'int (int)'
// CHECK-NEXT: |-FunctionDecl [[ADDR_18]] <col:1, line:15:1> line:13:1 also_after[implementation={vendor(llvm)}] 'int (int)'
// CHECK-NEXT: | |-ParmVarDecl [[ADDR_15]] <col:16> col:19 'int'
-// CHECK-NEXT: | `-CompoundStmt [[ADDR_19:0x[a-z0-9]*]] <col:21, line:15:1>
+// CHECK: | `-CompoundStmt [[ADDR_19:0x[a-z0-9]*]] <col:21, line:15:1>
// CHECK-NEXT: | `-ReturnStmt [[ADDR_20:0x[a-z0-9]*]] <line:14:3, col:10>
// CHECK-NEXT: | `-IntegerLiteral [[ADDR_21:0x[a-z0-9]*]] <col:10> 'int' 3
// CHECK-NEXT: |-FunctionDecl [[ADDR_22:0x[a-z0-9]*]] <line:16:1, col:22> col:5 implicit used also_after 'int (double)'
// CHECK-NEXT: | |-ParmVarDecl [[ADDR_23:0x[a-z0-9]*]] <col:16> col:22 'double'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_24:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(score(100): llvm)}
+// CHECK: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_24:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={vendor(score(100): llvm)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_25:0x[a-z0-9]*]] <col:1> 'int (double)' Function [[ADDR_26:0x[a-z0-9]*]] 'also_after[implementation={vendor(llvm)}]' 'int (double)'
// CHECK-NEXT: |-FunctionDecl [[ADDR_26]] <col:1, line:18:1> line:16:1 also_after[implementation={vendor(llvm)}] 'int (double)'
// CHECK-NEXT: | |-ParmVarDecl [[ADDR_23]] <col:16> col:22 'double'
-// CHECK-NEXT: | `-CompoundStmt [[ADDR_27:0x[a-z0-9]*]] <col:24, line:18:1>
+// CHECK: | `-CompoundStmt [[ADDR_27:0x[a-z0-9]*]] <col:24, line:18:1>
// CHECK-NEXT: | `-ReturnStmt [[ADDR_28:0x[a-z0-9]*]] <line:17:3, col:10>
// CHECK-NEXT: | `-IntegerLiteral [[ADDR_29:0x[a-z0-9]*]] <col:10> 'int' 0
// CHECK-NEXT: |-FunctionDecl [[ADDR_6]] <line:21:1, line:23:1> line:21:1 also_before[implementation={vendor(llvm)}] 'int ({{.*}})'
@@ -91,21 +91,21 @@ int test() {
// CHECK-NEXT: | |-CompoundStmt [[ADDR_34:0x[a-z0-9]*]] <col:22, line:28:1>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_35:0x[a-z0-9]*]] <line:27:3, col:10>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_36:0x[a-z0-9]*]] <col:10> 'int' 4
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_37:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(score(100): llvm)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_37:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(score(100): llvm)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_9]] <line:10:1> 'int ({{.*}})' Function [[ADDR_10]] 'also_after[implementation={vendor(llvm)}]' 'int ({{.*}})'
// CHECK-NEXT: |-FunctionDecl [[ADDR_38:0x[a-z0-9]*]] prev [[ADDR_14]] <line:29:1, line:31:1> line:29:5 also_after 'int (int)'
// CHECK-NEXT: | |-ParmVarDecl [[ADDR_39:0x[a-z0-9]*]] <col:16> col:19 'int'
-// CHECK-NEXT: | |-CompoundStmt [[ADDR_40:0x[a-z0-9]*]] <col:21, line:31:1>
+// CHECK: | |-CompoundStmt [[ADDR_40:0x[a-z0-9]*]] <col:21, line:31:1>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_41:0x[a-z0-9]*]] <line:30:3, col:10>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_42:0x[a-z0-9]*]] <col:10> 'int' 5
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_43:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(score(100): llvm)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_43:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(score(100): llvm)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_17]] <line:13:1> 'int (int)' Function [[ADDR_18]] 'also_after[implementation={vendor(llvm)}]' 'int (int)'
// CHECK-NEXT: |-FunctionDecl [[ADDR_44:0x[a-z0-9]*]] prev [[ADDR_22]] <line:32:1, line:34:1> line:32:5 used also_after 'int (double)'
// CHECK-NEXT: | |-ParmVarDecl [[ADDR_45:0x[a-z0-9]*]] <col:16> col:22 'double'
-// CHECK-NEXT: | |-CompoundStmt [[ADDR_46:0x[a-z0-9]*]] <col:24, line:34:1>
+// CHECK: | |-CompoundStmt [[ADDR_46:0x[a-z0-9]*]] <col:24, line:34:1>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_47:0x[a-z0-9]*]] <line:33:3, col:10>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_48:0x[a-z0-9]*]] <col:10> 'int' 6
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_49:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(score(100): llvm)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_49:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={vendor(score(100): llvm)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_25]] <line:16:1> 'int (double)' Function [[ADDR_26]] 'also_after[implementation={vendor(llvm)}]' 'int (double)'
// CHECK-NEXT: |-FunctionTemplateDecl [[ADDR_50:0x[a-z0-9]*]] <line:36:1, line:40:1> line:37:5 test1
// CHECK-NEXT: | |-TemplateTypeParmDecl [[ADDR_51:0x[a-z0-9]*]] <line:36:10, col:19> col:19 referenced typename depth 0 index 0 T
@@ -134,10 +134,10 @@ int test() {
// CHECK-NEXT: | `-ImplicitCastExpr [[ADDR_67]] <col:23> 'double' <IntegralToFloating> part_of_explicit_cast
// CHECK-NEXT: | `-IntegerLiteral [[ADDR_58]] <col:23> 'int' 0
// CHECK-NEXT: |-TypedefDecl [[ADDR_70:0x[a-z0-9]*]] <line:42:1, col:18> col:14 referenced Ty 'int (*)({{.*}})'
-// CHECK-NEXT: | `-PointerType [[ADDR_71:0x[a-z0-9]*]] 'int (*)({{.*}})'
-// CHECK-NEXT: | `-ParenType [[ADDR_72:0x[a-z0-9]*]] 'int ({{.*}})' sugar
-// CHECK-NEXT: | `-FunctionProtoType [[ADDR_73:0x[a-z0-9]*]] 'int ({{.*}})' cdecl
-// CHECK-NEXT: | `-BuiltinType [[ADDR_74:0x[a-z0-9]*]] 'int'
+// CHECK-NEXT: | `-typeDetails: PointerType [[ADDR_71:0x[a-z0-9]*]] 'int (*)({{.*}})'
+// CHECK-NEXT: | `-typeDetails: ParenType [[ADDR_72:0x[a-z0-9]*]] 'int ({{.*}})' sugar
+// CHECK-NEXT: | `-typeDetails: FunctionProtoType [[ADDR_73:0x[a-z0-9]*]] 'int ({{.*}})' cdecl
+// CHECK: | `-functionDetails: cdeclReturnType [[ADDR_74:0x[a-z0-9]*]] 'int'
// CHECK-NEXT: |-FunctionTemplateDecl [[ADDR_75:0x[a-z0-9]*]] <line:44:1, line:48:1> line:45:5 test2
// CHECK-NEXT: | |-NonTypeTemplateParmDecl [[ADDR_76:0x[a-z0-9]*]] <line:44:10, col:13> col:13 referenced 'Ty':'int (*)({{.*}})' depth 0 index 0 fn
// CHECK-NEXT: | |-FunctionDecl [[ADDR_77:0x[a-z0-9]*]] <line:45:1, line:48:1> line:45:5 test2 'int ({{.*}})'
diff --git a/clang/test/AST/ast-dump-openmp-begin-declare-variant_template_2.cpp b/clang/test/AST/ast-dump-openmp-begin-declare-variant_template_2.cpp
index 6fe05e33a5fb8..3f49e30a77d0a 100644
--- a/clang/test/AST/ast-dump-openmp-begin-declare-variant_template_2.cpp
+++ b/clang/test/AST/ast-dump-openmp-begin-declare-variant_template_2.cpp
@@ -58,19 +58,19 @@ int test() {
// CHECK-NEXT: | |-TemplateTypeParmDecl [[ADDR_1:0x[a-z0-9]*]] <line:4:11, col:20> col:20 referenced typename depth 0 index 0 T
// CHECK-NEXT: | |-FunctionDecl [[ADDR_2:0x[a-z0-9]*]] <line:5:1, line:7:1> line:5:5 also_before 'int (T)'
// CHECK-NEXT: | | |-ParmVarDecl [[ADDR_3:0x[a-z0-9]*]] <col:17> col:18 'T'
-// CHECK-NEXT: | | |-CompoundStmt [[ADDR_4:0x[a-z0-9]*]] <col:20, line:7:1>
+// CHECK: | | |-CompoundStmt [[ADDR_4:0x[a-z0-9]*]] <col:20, line:7:1>
// CHECK-NEXT: | | | `-ReturnStmt [[ADDR_5:0x[a-z0-9]*]] <line:6:3, col:10>
// CHECK-NEXT: | | | `-IntegerLiteral [[ADDR_6:0x[a-z0-9]*]] <col:10> 'int' 1
-// CHECK-NEXT: | | `-OMPDeclareVariantAttr [[ADDR_7:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(allow_templates)}
+// CHECK-NEXT: | | `-attrDetails: OMPDeclareVariantAttr [[ADDR_7:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(allow_templates)}
// CHECK-NEXT: | | `-DeclRefExpr [[ADDR_8:0x[a-z0-9]*]] <line:18:1> 'int (T)' {{.*}}Function [[ADDR_9:0x[a-z0-9]*]] 'also_before[implementation={extension(allow_templates)}]' 'int (T)'
// CHECK-NEXT: | `-FunctionDecl [[ADDR_10:0x[a-z0-9]*]] <line:5:1, line:7:1> line:5:5 used also_before 'int (double)'
// CHECK-NEXT: | |-TemplateArgument type 'double'
-// CHECK-NEXT: | | `-BuiltinType [[ADDR_11:0x[a-z0-9]*]] 'double'
+// CHECK-NEXT: | | `-typeDetails: BuiltinType [[ADDR_11:0x[a-z0-9]*]] 'double'
// CHECK-NEXT: | |-ParmVarDecl [[ADDR_12:0x[a-z0-9]*]] <col:17> col:18 'double'
-// CHECK-NEXT: | |-CompoundStmt [[ADDR_13:0x[a-z0-9]*]] <col:20, line:7:1>
+// CHECK: | |-CompoundStmt [[ADDR_13:0x[a-z0-9]*]] <col:20, line:7:1>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_14:0x[a-z0-9]*]] <line:6:3, col:10>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_6]] <col:10> 'int' 1
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_15:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(allow_templates)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_15:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(allow_templates)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_16:0x[a-z0-9]*]] <line:18:1> 'int (double)' {{.*}}Function [[ADDR_17:0x[a-z0-9]*]] 'also_before[implementation={extension(allow_templates)}]' 'int (double)'
// CHECK-NEXT: |-FunctionTemplateDecl [[ADDR_18:0x[a-z0-9]*]] <line:8:1, line:11:1> line:9:5 also_before_mismatch
// CHECK-NEXT: | |-NonTypeTemplateParmDecl [[ADDR_19:0x[a-z0-9]*]] <line:8:11, col:15> col:15 'int' depth 0 index 0 V
@@ -91,43 +91,43 @@ int test() {
// CHECK-NEXT: | |-TemplateTypeParmDecl [[ADDR_32:0x[a-z0-9]*]] <line:17:11, col:20> col:20 referenced typename depth 0 index 0 T
// CHECK-NEXT: | |-FunctionDecl [[ADDR_9]] <line:18:1, line:20:1> line:18:1 referenced also_before[implementation={extension(allow_templates)}] 'int (T)'
// CHECK-NEXT: | | |-ParmVarDecl [[ADDR_33:0x[a-z0-9]*]] <col:17> col:18 'T'
-// CHECK-NEXT: | | `-CompoundStmt [[ADDR_34:0x[a-z0-9]*]] <col:20, line:20:1>
+// CHECK: | | `-CompoundStmt [[ADDR_34:0x[a-z0-9]*]] <col:20, line:20:1>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_35:0x[a-z0-9]*]] <line:19:3, col:10>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_36:0x[a-z0-9]*]] <col:10> 'int' 0
// CHECK-NEXT: | `-FunctionDecl [[ADDR_17]] <line:18:1, line:20:1> line:18:1 also_before[implementation={extension(allow_templates)}] 'int (double)'
// CHECK-NEXT: | |-TemplateArgument type 'double'
-// CHECK-NEXT: | | `-BuiltinType [[ADDR_11]] 'double'
+// CHECK-NEXT: | | `-typeDetails: BuiltinType [[ADDR_11]] 'double'
// CHECK-NEXT: | |-ParmVarDecl [[ADDR_37:0x[a-z0-9]*]] <col:17> col:18 'double'
-// CHECK-NEXT: | `-CompoundStmt [[ADDR_38:0x[a-z0-9]*]] <col:20, line:20:1>
+// CHECK: | `-CompoundStmt [[ADDR_38:0x[a-z0-9]*]] <col:20, line:20:1>
// CHECK-NEXT: | `-ReturnStmt [[ADDR_39:0x[a-z0-9]*]] <line:19:3, col:10>
// CHECK-NEXT: | `-IntegerLiteral [[ADDR_36]] <col:10> 'int' 0
// CHECK-NEXT: |-FunctionTemplateDecl [[ADDR_40:0x[a-z0-9]*]] <line:21:1, line:22:17> col:5 implicit also_after
// CHECK-NEXT: | |-TemplateTypeParmDecl [[ADDR_41:0x[a-z0-9]*]] <line:21:11, col:20> col:20 referenced typename depth 0 index 0 T
// CHECK-NEXT: | |-FunctionDecl [[ADDR_42:0x[a-z0-9]*]] <line:22:1, col:17> col:5 also_after 'int (T)'
// CHECK-NEXT: | | |-ParmVarDecl [[ADDR_43:0x[a-z0-9]*]] <col:16> col:17 'T'
-// CHECK-NEXT: | | `-OMPDeclareVariantAttr [[ADDR_44:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(allow_templates)}
+// CHECK: | | `-attrDetails: OMPDeclareVariantAttr [[ADDR_44:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(allow_templates)}
// CHECK-NEXT: | | `-DeclRefExpr [[ADDR_45:0x[a-z0-9]*]] <col:1> 'int (T)' {{.*}}Function [[ADDR_46:0x[a-z0-9]*]] 'also_after[implementation={extension(allow_templates)}]' 'int (T)'
// CHECK-NEXT: | `-FunctionDecl [[ADDR_47:0x[a-z0-9]*]] <line:44:1, line:46:1> line:44:5 used also_after 'int (char)'
// CHECK-NEXT: | |-TemplateArgument type 'char'
-// CHECK-NEXT: | | `-BuiltinType [[ADDR_48:0x[a-z0-9]*]] 'char'
+// CHECK-NEXT: | | `-typeDetails: BuiltinType [[ADDR_48:0x[a-z0-9]*]] 'char'
// CHECK-NEXT: | |-ParmVarDecl [[ADDR_49:0x[a-z0-9]*]] <col:16> col:17 'char'
-// CHECK-NEXT: | |-CompoundStmt [[ADDR_50:0x[a-z0-9]*]] <col:19, line:46:1>
+// CHECK: | |-CompoundStmt [[ADDR_50:0x[a-z0-9]*]] <col:19, line:46:1>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_51:0x[a-z0-9]*]] <line:45:3, col:10>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_52:0x[a-z0-9]*]] <col:10> 'int' 6
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_53:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(allow_templates)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_53:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(allow_templates)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_54:0x[a-z0-9]*]] <line:22:1> 'int (char)' {{.*}}Function [[ADDR_55:0x[a-z0-9]*]] 'also_after[implementation={extension(allow_templates)}]' 'int (char)'
// CHECK-NEXT: |-FunctionTemplateDecl [[ADDR_56:0x[a-z0-9]*]] <line:21:1, line:24:1> line:22:1 also_after[implementation={extension(allow_templates)}]
// CHECK-NEXT: | |-TemplateTypeParmDecl [[ADDR_41]] <line:21:11, col:20> col:20 referenced typename depth 0 index 0 T
// CHECK-NEXT: | |-FunctionDecl [[ADDR_46]] <line:22:1, line:24:1> line:22:1 referenced also_after[implementation={extension(allow_templates)}] 'int (T)'
// CHECK-NEXT: | | |-ParmVarDecl [[ADDR_43]] <col:16> col:17 'T'
-// CHECK-NEXT: | | `-CompoundStmt [[ADDR_57:0x[a-z0-9]*]] <col:19, line:24:1>
+// CHECK: | | `-CompoundStmt [[ADDR_57:0x[a-z0-9]*]] <col:19, line:24:1>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_58:0x[a-z0-9]*]] <line:23:3, col:10>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_59:0x[a-z0-9]*]] <col:10> 'int' 0
// CHECK-NEXT: | `-FunctionDecl [[ADDR_55]] <line:22:1, line:24:1> line:22:1 also_after[implementation={extension(allow_templates)}] 'int (char)'
// CHECK-NEXT: | |-TemplateArgument type 'char'
-// CHECK-NEXT: | | `-BuiltinType [[ADDR_48]] 'char'
+// CHECK-NEXT: | | `-typeDetails: BuiltinType [[ADDR_48]] 'char'
// CHECK-NEXT: | |-ParmVarDecl [[ADDR_60:0x[a-z0-9]*]] <col:16> col:17 'char'
-// CHECK-NEXT: | `-CompoundStmt [[ADDR_61:0x[a-z0-9]*]] <col:19, line:24:1>
+// CHECK: | `-CompoundStmt [[ADDR_61:0x[a-z0-9]*]] <col:19, line:24:1>
// CHECK-NEXT: | `-ReturnStmt [[ADDR_62:0x[a-z0-9]*]] <line:23:3, col:10>
// CHECK-NEXT: | `-IntegerLiteral [[ADDR_59]] <col:10> 'int' 0
// CHECK-NEXT: |-FunctionTemplateDecl [[ADDR_63:0x[a-z0-9]*]] <line:25:1, line:26:29> col:5 implicit also_after_mismatch
@@ -135,52 +135,52 @@ int test() {
// CHECK-NEXT: | |-TemplateTypeParmDecl [[ADDR_65:0x[a-z0-9]*]] <col:23, col:32> col:32 referenced typename depth 0 index 1 Q
// CHECK-NEXT: | `-FunctionDecl [[ADDR_66:0x[a-z0-9]*]] <line:26:1, col:29> col:5 also_after_mismatch 'int (T, Q)'
// CHECK-NEXT: | |-ParmVarDecl [[ADDR_67:0x[a-z0-9]*]] <col:25> col:26 'T'
-// CHECK-NEXT: | |-ParmVarDecl [[ADDR_68:0x[a-z0-9]*]] <col:28> col:29 'Q'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_69:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(allow_templates)}
+// CHECK: | |-ParmVarDecl [[ADDR_68:0x[a-z0-9]*]] <col:28> col:29 'Q'
+// CHECK: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_69:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(allow_templates)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_70:0x[a-z0-9]*]] <col:1> 'int (T, Q)' {{.*}}Function [[ADDR_71:0x[a-z0-9]*]] 'also_after_mismatch[implementation={extension(allow_templates)}]' 'int (T, Q)'
// CHECK-NEXT: |-FunctionTemplateDecl [[ADDR_72:0x[a-z0-9]*]] <line:25:1, line:28:1> line:26:1 also_after_mismatch[implementation={extension(allow_templates)}]
// CHECK-NEXT: | |-TemplateTypeParmDecl [[ADDR_64]] <line:25:11, col:20> col:20 referenced typename depth 0 index 0 T
// CHECK-NEXT: | |-TemplateTypeParmDecl [[ADDR_65]] <col:23, col:32> col:32 referenced typename depth 0 index 1 Q
// CHECK-NEXT: | `-FunctionDecl [[ADDR_71]] <line:26:1, line:28:1> line:26:1 also_after_mismatch[implementation={extension(allow_templates)}] 'int (T, Q)'
// CHECK-NEXT: | |-ParmVarDecl [[ADDR_67]] <col:25> col:26 'T'
-// CHECK-NEXT: | |-ParmVarDecl [[ADDR_68]] <col:28> col:29 'Q'
-// CHECK-NEXT: | `-CompoundStmt [[ADDR_73:0x[a-z0-9]*]] <col:31, line:28:1>
+// CHECK: | |-ParmVarDecl [[ADDR_68]] <col:28> col:29 'Q'
+// CHECK: | `-CompoundStmt [[ADDR_73:0x[a-z0-9]*]] <col:31, line:28:1>
// CHECK-NEXT: | `-ReturnStmt [[ADDR_74:0x[a-z0-9]*]] <line:27:3, col:10>
// CHECK-NEXT: | `-IntegerLiteral [[ADDR_75:0x[a-z0-9]*]] <col:10> 'int' 2
// CHECK-NEXT: |-FunctionTemplateDecl [[ADDR_76:0x[a-z0-9]*]] <line:29:1, line:30:27> col:5 implicit also_before_mismatch
// CHECK-NEXT: | |-TemplateTypeParmDecl [[ADDR_77:0x[a-z0-9]*]] <line:29:11, col:20> col:20 referenced typename depth 0 index 0 T
// CHECK-NEXT: | `-FunctionDecl [[ADDR_78:0x[a-z0-9]*]] <line:30:1, col:27> col:5 also_before_mismatch 'int (T)'
// CHECK-NEXT: | |-ParmVarDecl [[ADDR_79:0x[a-z0-9]*]] <col:26> col:27 'T'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_80:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(allow_templates)}
+// CHECK: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_80:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(allow_templates)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_81:0x[a-z0-9]*]] <col:1> 'int (T)' {{.*}}Function [[ADDR_82:0x[a-z0-9]*]] 'also_before_mismatch[implementation={extension(allow_templates)}]' 'int (T)'
// CHECK-NEXT: |-FunctionTemplateDecl [[ADDR_83:0x[a-z0-9]*]] <line:29:1, line:32:1> line:30:1 also_before_mismatch[implementation={extension(allow_templates)}]
// CHECK-NEXT: | |-TemplateTypeParmDecl [[ADDR_77]] <line:29:11, col:20> col:20 referenced typename depth 0 index 0 T
// CHECK-NEXT: | `-FunctionDecl [[ADDR_82]] <line:30:1, line:32:1> line:30:1 also_before_mismatch[implementation={extension(allow_templates)}] 'int (T)'
// CHECK-NEXT: | |-ParmVarDecl [[ADDR_79]] <col:26> col:27 'T'
-// CHECK-NEXT: | `-CompoundStmt [[ADDR_84:0x[a-z0-9]*]] <col:29, line:32:1>
+// CHECK: | `-CompoundStmt [[ADDR_84:0x[a-z0-9]*]] <col:29, line:32:1>
// CHECK-NEXT: | `-ReturnStmt [[ADDR_85:0x[a-z0-9]*]] <line:31:3, col:10>
// CHECK-NEXT: | `-IntegerLiteral [[ADDR_86:0x[a-z0-9]*]] <col:10> 'int' 3
// CHECK-NEXT: |-FunctionTemplateDecl [[ADDR_87:0x[a-z0-9]*]] <line:33:1, line:34:31> col:5 implicit also_before_non_template
// CHECK-NEXT: | |-TemplateTypeParmDecl [[ADDR_88:0x[a-z0-9]*]] <line:33:11, col:20> col:20 referenced typename depth 0 index 0 T
// CHECK-NEXT: | `-FunctionDecl [[ADDR_89:0x[a-z0-9]*]] <line:34:1, col:31> col:5 also_before_non_template 'int (T)'
// CHECK-NEXT: | |-ParmVarDecl [[ADDR_90:0x[a-z0-9]*]] <col:30> col:31 'T'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_91:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(allow_templates)}
+// CHECK: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_91:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(allow_templates)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_92:0x[a-z0-9]*]] <col:1> 'int (T)' {{.*}}Function [[ADDR_93:0x[a-z0-9]*]] 'also_before_non_template[implementation={extension(allow_templates)}]' 'int (T)'
// CHECK-NEXT: |-FunctionTemplateDecl [[ADDR_94:0x[a-z0-9]*]] <line:33:1, line:36:1> line:34:1 also_before_non_template[implementation={extension(allow_templates)}]
// CHECK-NEXT: | |-TemplateTypeParmDecl [[ADDR_88]] <line:33:11, col:20> col:20 referenced typename depth 0 index 0 T
// CHECK-NEXT: | `-FunctionDecl [[ADDR_93]] <line:34:1, line:36:1> line:34:1 also_before_non_template[implementation={extension(allow_templates)}] 'int (T)'
// CHECK-NEXT: | |-ParmVarDecl [[ADDR_90]] <col:30> col:31 'T'
-// CHECK-NEXT: | `-CompoundStmt [[ADDR_95:0x[a-z0-9]*]] <col:33, line:36:1>
+// CHECK: | `-CompoundStmt [[ADDR_95:0x[a-z0-9]*]] <col:33, line:36:1>
// CHECK-NEXT: | `-ReturnStmt [[ADDR_96:0x[a-z0-9]*]] <line:35:3, col:10>
// CHECK-NEXT: | `-IntegerLiteral [[ADDR_97:0x[a-z0-9]*]] <col:10> 'int' 4
// CHECK-NEXT: |-FunctionTemplateDecl [[ADDR_98:0x[a-z0-9]*]] <line:37:1, line:38:18> col:5 implicit only_def
// CHECK-NEXT: | |-NonTypeTemplateParmDecl [[ADDR_99:0x[a-z0-9]*]] <line:37:11, col:15> col:15 'int' depth 0 index 0 V
// CHECK-NEXT: | |-FunctionDecl [[ADDR_100:0x[a-z0-9]*]] <line:38:1, col:18> col:5 only_def 'int ({{.*}})'
-// CHECK-NEXT: | | `-OMPDeclareVariantAttr [[ADDR_101:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(allow_templates)}
+// CHECK-NEXT: | | `-attrDetails: OMPDeclareVariantAttr [[ADDR_101:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(allow_templates)}
// CHECK-NEXT: | | `-DeclRefExpr [[ADDR_102:0x[a-z0-9]*]] <col:1> 'int ({{.*}})' {{.*}}Function [[ADDR_103:0x[a-z0-9]*]] 'only_def[implementation={extension(allow_templates)}]' 'int ({{.*}})'
// CHECK-NEXT: | `-FunctionDecl [[ADDR_104:0x[a-z0-9]*]] <col:1, col:18> col:5 used only_def 'int ({{.*}})'
// CHECK-NEXT: | |-TemplateArgument integral '0'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_105:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(allow_templates)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_105:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(allow_templates)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_106:0x[a-z0-9]*]] <col:1> 'int ({{.*}})' {{.*}}Function [[ADDR_107:0x[a-z0-9]*]] 'only_def[implementation={extension(allow_templates)}]' 'int ({{.*}})'
// CHECK-NEXT: |-FunctionTemplateDecl [[ADDR_108:0x[a-z0-9]*]] <line:37:1, line:40:1> line:38:1 only_def[implementation={extension(allow_templates)}]
// CHECK-NEXT: | |-NonTypeTemplateParmDecl [[ADDR_99]] <line:37:11, col:15> col:15 'int' depth 0 index 0 V
@@ -197,24 +197,24 @@ int test() {
// CHECK-NEXT: | |-TemplateTypeParmDecl [[ADDR_115:0x[a-z0-9]*]] <line:43:11, col:20> col:20 referenced typename depth 0 index 0 T
// CHECK-NEXT: | |-FunctionDecl [[ADDR_116:0x[a-z0-9]*]] prev [[ADDR_42]] <line:44:1, line:46:1> line:44:5 also_after 'int (T)'
// CHECK-NEXT: | | |-ParmVarDecl [[ADDR_117:0x[a-z0-9]*]] <col:16> col:17 'T'
-// CHECK-NEXT: | | |-CompoundStmt [[ADDR_118:0x[a-z0-9]*]] <col:19, line:46:1>
+// CHECK: | | |-CompoundStmt [[ADDR_118:0x[a-z0-9]*]] <col:19, line:46:1>
// CHECK-NEXT: | | | `-ReturnStmt [[ADDR_119:0x[a-z0-9]*]] <line:45:3, col:10>
// CHECK-NEXT: | | | `-IntegerLiteral [[ADDR_52]] <col:10> 'int' 6
-// CHECK-NEXT: | | `-OMPDeclareVariantAttr [[ADDR_120:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={extension(allow_templates)}
+// CHECK-NEXT: | | `-attrDetails: OMPDeclareVariantAttr [[ADDR_120:0x[a-z0-9]*]] <<invalid sloc>> Inherited Implicit implementation={extension(allow_templates)}
// CHECK-NEXT: | | `-DeclRefExpr [[ADDR_45]] <line:22:1> 'int (T)' {{.*}}Function [[ADDR_46]] 'also_after[implementation={extension(allow_templates)}]' 'int (T)'
// CHECK-NEXT: | `-Function [[ADDR_47]] 'also_after' 'int (char)'
// CHECK-NEXT: |-FunctionTemplateDecl [[ADDR_121:0x[a-z0-9]*]] <line:47:1, line:50:1> line:48:5 also_after_mismatch
// CHECK-NEXT: | |-TemplateTypeParmDecl [[ADDR_122:0x[a-z0-9]*]] <line:47:11, col:20> col:20 referenced typename depth 0 index 0 T
// CHECK-NEXT: | |-FunctionDecl [[ADDR_123:0x[a-z0-9]*]] <line:48:1, line:50:1> line:48:5 also_after_mismatch 'int (T)'
// CHECK-NEXT: | | |-ParmVarDecl [[ADDR_124:0x[a-z0-9]*]] <col:25> col:26 'T'
-// CHECK-NEXT: | | `-CompoundStmt [[ADDR_125:0x[a-z0-9]*]] <col:28, line:50:1>
+// CHECK: | | `-CompoundStmt [[ADDR_125:0x[a-z0-9]*]] <col:28, line:50:1>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_126:0x[a-z0-9]*]] <line:49:3, col:10>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_127:0x[a-z0-9]*]] <col:10> 'int' 0
// CHECK-NEXT: | `-FunctionDecl [[ADDR_128:0x[a-z0-9]*]] <line:48:1, line:50:1> line:48:5 used also_after_mismatch 'int (int)'
// CHECK-NEXT: | |-TemplateArgument type 'int'
-// CHECK-NEXT: | | `-BuiltinType [[ADDR_129:0x[a-z0-9]*]] 'int'
+// CHECK-NEXT: | | `-typeDetails: BuiltinType [[ADDR_129:0x[a-z0-9]*]] 'int'
// CHECK-NEXT: | |-ParmVarDecl [[ADDR_130:0x[a-z0-9]*]] <col:25> col:26 'int'
-// CHECK-NEXT: | `-CompoundStmt [[ADDR_131:0x[a-z0-9]*]] <col:28, line:50:1>
+// CHECK: | `-CompoundStmt [[ADDR_131:0x[a-z0-9]*]] <col:28, line:50:1>
// CHECK-NEXT: | `-ReturnStmt [[ADDR_132:0x[a-z0-9]*]] <line:49:3, col:10>
// CHECK-NEXT: | `-IntegerLiteral [[ADDR_127]] <col:10> 'int' 0
// CHECK-NEXT: `-FunctionDecl [[ADDR_133:0x[a-z0-9]*]] <line:52:1, line:55:1> line:52:5 test 'int ({{.*}})'
diff --git a/clang/test/AST/ast-dump-openmp-begin-declare-variant_template_3.cpp b/clang/test/AST/ast-dump-openmp-begin-declare-variant_template_3.cpp
index ad269506042c8..eb719888d46ff 100644
--- a/clang/test/AST/ast-dump-openmp-begin-declare-variant_template_3.cpp
+++ b/clang/test/AST/ast-dump-openmp-begin-declare-variant_template_3.cpp
@@ -1,261 +1,398 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -fopenmp -verify -ast-dump %s %std_cxx11-14 | FileCheck %s --check-prefixes=CHECK,CXX11
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -fopenmp -verify -ast-dump %s %std_cxx17- | FileCheck %s --check-prefixes=CHECK,CXX17
+// RUN: %clang_cc1 -triple x86_64-unknown-unknown -fopenmp -verify -ast-dump %s | FileCheck %s
// expected-no-diagnostics
// PR47655
template <typename T> struct S {
- S(int, T *) {}
+ S(int, T *) {}
};
template <typename T>
int also_before(T s) {
- return 0;
+ return 0;
}
#pragma omp begin declare variant match(implementation = {extension(allow_templates)})
template <typename T>
int also_before(S<T> s) {
- // Ensure there is no error because this is never instantiated.
- double t;
- S<T> q(1, &t);
- return 1;
+ // Ensure there is no error because this is never instantiated.
+ double t;
+ S<T> q(1, &t);
+ return 1;
}
template <typename T>
int special(S<T> s) {
- T t;
- S<T> q(0, &t);
- return 0;
+ T t;
+ S<T> q(0, &t);
+ return 0;
}
template <typename T>
int also_after(S<T> s) {
- // Ensure there is no error because this is never instantiated.
- double t;
- S<T> q(2.0, &t);
- return 2;
+ // Ensure there is no error because this is never instantiated.
+ double t;
+ S<T> q(2.0, &t);
+ return 2;
}
#pragma omp end declare variant
template <typename T>
int also_after(T s) {
- return 0;
+ return 0;
}
int test() {
- // Should return 0.
- return also_before(0) + also_after(0) + also_before(0.) + also_after(0.) + special(S<int>(0, 0));
+ // Should return 0.
+ return also_before(0) + also_after(0) + also_before(0.) + also_after(0.) + special(S<int>(0, 0));
}
-// CHECK: |-ClassTemplateDecl [[ADDR_0:0x[a-z0-9]*]] <{{.*}}, line:7:1> line:5:30 S
-// CHECK-NEXT: | |-TemplateTypeParmDecl [[ADDR_1:0x[a-z0-9]*]] <col:11, col:20> col:20 referenced typename depth 0 index 0 T
-// CHECK-NEXT: | |-CXXRecordDecl [[ADDR_2:0x[a-z0-9]*]] <col:23, line:7:1> line:5:30 struct S definition
-// CHECK-NEXT: | | |-DefinitionData empty standard_layout trivially_copyable has_user_declared_ctor can_const_default_init
-// CHECK-NEXT: | | | |-DefaultConstructor defaulted_is_constexpr
-// CHECK-NEXT: | | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT: | | | |-MoveConstructor exists simple trivial needs_implicit
-// CHECK-NEXT: | | | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT: | | | |-MoveAssignment exists simple trivial needs_implicit
-// CHECK-NEXT: | | | `-Destructor simple irrelevant trivial {{(constexpr )?}}needs_implicit
-// CHECK-NEXT: | | |-CXXRecordDecl [[ADDR_3:0x[a-z0-9]*]] <col:23, col:30> col:30 implicit referenced struct S
-// CHECK-NEXT: | | `-CXXConstructorDecl [[ADDR_4:0x[a-z0-9]*]] <line:6:3, col:16> col:3 S<T> 'void (int, T *)'
-// CHECK-NEXT: | | |-ParmVarDecl [[ADDR_5:0x[a-z0-9]*]] <col:5> col:8 'int'
-// CHECK-NEXT: | | |-ParmVarDecl [[ADDR_6:0x[a-z0-9]*]] <col:10, col:12> col:13 'T *'
-// CHECK-NEXT: | | `-CompoundStmt [[ADDR_7:0x[a-z0-9]*]] <col:15, col:16>
-// CHECK-NEXT: | |-ClassTemplateSpecializationDecl [[ADDR_8:0x[a-z0-9]*]] <line:5:1, line:7:1> line:5:30 struct S definition
-// CHECK-NEXT: | | |-DefinitionData pass_in_registers empty standard_layout trivially_copyable has_user_declared_ctor can_const_default_init
-// CHECK-NEXT: | | | |-DefaultConstructor defaulted_is_constexpr
-// CHECK-NEXT: | | | |-CopyConstructor simple trivial has_const_param implicit_has_const_param
-// CHECK-NEXT: | | | |-MoveConstructor exists simple trivial
-// CHECK-NEXT: | | | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param
-// CHECK-NEXT: | | | |-MoveAssignment exists simple trivial needs_implicit
-// CHECK-NEXT: | | | `-Destructor simple irrelevant trivial
-// CHECK-NEXT: | | |-TemplateArgument type 'int'
-// CHECK-NEXT: | | | `-BuiltinType [[ADDR_9:0x[a-z0-9]*]] 'int'
-// CHECK-NEXT: | | |-CXXRecordDecl [[ADDR_10:0x[a-z0-9]*]] <col:23, col:30> col:30 implicit struct S
-// CHECK-NEXT: | | |-CXXConstructorDecl [[ADDR_11:0x[a-z0-9]*]] <line:6:3, col:16> col:3 used S 'void (int, int *)'
-// CHECK-NEXT: | | | |-ParmVarDecl [[ADDR_12:0x[a-z0-9]*]] <col:5> col:8 'int'
-// CHECK-NEXT: | | | |-ParmVarDecl [[ADDR_13:0x[a-z0-9]*]] <col:10, col:12> col:13 'int *'
-// CHECK-NEXT: | | | `-CompoundStmt [[ADDR_7]] <col:15, col:16>
-// CHECK-NEXT: | | |-CXXConstructorDecl [[ADDR_14:0x[a-z0-9]*]] <line:5:30> col:30 implicit constexpr S 'void (const S<int> &)' inline default trivial noexcept-unevaluated [[ADDR_14]]
-// CHECK-NEXT: | | | `-ParmVarDecl [[ADDR_15:0x[a-z0-9]*]] <col:30> col:30 'const S<int> &'
-// CXX11-NEXT: | | |-CXXConstructorDecl [[ADDR_16:0x[a-z0-9]*]] <col:30> col:30 implicit used constexpr S 'void (S<int> &&) noexcept' inline default trivial
-// CXX11-NEXT: | | | |-ParmVarDecl [[ADDR_17:0x[a-z0-9]*]] <col:30> col:30 'S<int> &&'
-// CXX11-NEXT: | | | `-CompoundStmt [[ADDR_18:0x[a-z0-9]*]] <col:30>
-// CXX17-NEXT: | | |-CXXConstructorDecl [[ADDR_16:0x[a-z0-9]*]] <col:30> col:30 implicit constexpr S 'void (S<int> &&)' inline default trivial noexcept-unevaluated
-// CXX17-NEXT: | | | `-ParmVarDecl [[ADDR_17:0x[a-z0-9]*]] <col:30> col:30 'S<int> &&'
-// CHECK-NEXT: | | `-CXXDestructorDecl [[ADDR_19:0x[a-z0-9]*]] <col:30> col:30 implicit referenced {{(constexpr )?}}~S 'void ({{.*}}) noexcept' inline default trivial
-// CHECK-NEXT: | `-ClassTemplateSpecializationDecl [[ADDR_20:0x[a-z0-9]*]] <col:1, line:7:1> line:5:30 struct S
-// CHECK-NEXT: | `-TemplateArgument type 'double'
-// CHECK-NEXT: | `-BuiltinType [[ADDR_21:0x[a-z0-9]*]] 'double'
-// CHECK-NEXT: |-FunctionTemplateDecl [[ADDR_22:0x[a-z0-9]*]] <line:9:1, line:12:1> line:10:5 also_before
-// CHECK-NEXT: | |-TemplateTypeParmDecl [[ADDR_23:0x[a-z0-9]*]] <line:9:11, col:20> col:20 referenced typename depth 0 index 0 T
-// CHECK-NEXT: | |-FunctionDecl [[ADDR_24:0x[a-z0-9]*]] <line:10:1, line:12:1> line:10:5 also_before 'int (T)'
-// CHECK-NEXT: | | |-ParmVarDecl [[ADDR_25:0x[a-z0-9]*]] <col:17, col:19> col:19 s 'T'
-// CHECK-NEXT: | | |-CompoundStmt [[ADDR_26:0x[a-z0-9]*]] <col:22, line:12:1>
-// CHECK-NEXT: | | | `-ReturnStmt [[ADDR_27:0x[a-z0-9]*]] <line:11:3, col:10>
-// CHECK-NEXT: | | | `-IntegerLiteral [[ADDR_28:0x[a-z0-9]*]] <col:10> 'int' 0
-// CHECK-NEXT: | | `-OMPDeclareVariantAttr [[ADDR_29:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(allow_templates)}
-// CHECK-NEXT: | | `-DeclRefExpr [[ADDR_30:0x[a-z0-9]*]] <line:16:1> 'int (S<T>)' {{.*}}Function [[ADDR_31:0x[a-z0-9]*]] 'also_before[implementation={extension(allow_templates)}]' 'int (S<T>)'
-// CHECK-NEXT: | |-FunctionDecl [[ADDR_32:0x[a-z0-9]*]] <line:10:1, line:12:1> line:10:5 used also_before 'int (int)'
-// CHECK-NEXT: | | |-TemplateArgument type 'int'
-// CHECK-NEXT: | | | `-BuiltinType [[ADDR_9]] 'int'
-// CHECK-NEXT: | | |-ParmVarDecl [[ADDR_33:0x[a-z0-9]*]] <col:17, col:19> col:19 s 'int'
-// CHECK-NEXT: | | `-CompoundStmt [[ADDR_34:0x[a-z0-9]*]] <col:22, line:12:1>
-// CHECK-NEXT: | | `-ReturnStmt [[ADDR_35:0x[a-z0-9]*]] <line:11:3, col:10>
-// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_28]] <col:10> 'int' 0
-// CHECK-NEXT: | `-FunctionDecl [[ADDR_36:0x[a-z0-9]*]] <line:10:1, line:12:1> line:10:5 used also_before 'int (double)'
-// CHECK-NEXT: | |-TemplateArgument type 'double'
-// CHECK-NEXT: | | `-BuiltinType [[ADDR_21]] 'double'
-// CHECK-NEXT: | |-ParmVarDecl [[ADDR_37:0x[a-z0-9]*]] <col:17, col:19> col:19 s 'double'
-// CHECK-NEXT: | `-CompoundStmt [[ADDR_38:0x[a-z0-9]*]] <col:22, line:12:1>
-// CHECK-NEXT: | `-ReturnStmt [[ADDR_39:0x[a-z0-9]*]] <line:11:3, col:10>
-// CHECK-NEXT: | `-IntegerLiteral [[ADDR_28]] <col:10> 'int' 0
-// CHECK-NEXT: |-FunctionTemplateDecl [[ADDR_40:0x[a-z0-9]*]] <line:15:1, line:21:1> line:16:1 also_before[implementation={extension(allow_templates)}]
-// CHECK-NEXT: | |-TemplateTypeParmDecl [[ADDR_41:0x[a-z0-9]*]] <line:15:11, col:20> col:20 referenced typename depth 0 index 0 T
-// CHECK-NEXT: | |-FunctionDecl [[ADDR_31]] <line:16:1, line:21:1> line:16:1 referenced also_before[implementation={extension(allow_templates)}] 'int (S<T>)'
-// CHECK-NEXT: | | |-ParmVarDecl [[ADDR_42:0x[a-z0-9]*]] <col:17, col:22> col:22 s 'S<T>'
-// CHECK-NEXT: | | `-CompoundStmt [[ADDR_43:0x[a-z0-9]*]] <col:25, line:21:1>
-// CHECK-NEXT: | | |-DeclStmt [[ADDR_44:0x[a-z0-9]*]] <line:18:3, col:11>
-// CHECK-NEXT: | | | `-VarDecl [[ADDR_45:0x[a-z0-9]*]] <col:3, col:10> col:10 referenced t 'double'
-// CHECK-NEXT: | | |-DeclStmt [[ADDR_46:0x[a-z0-9]*]] <line:19:3, col:16>
-// CHECK-NEXT: | | | `-VarDecl [[ADDR_47:0x[a-z0-9]*]] <col:3, col:15> col:8 q 'S<T>' callinit
-// CHECK-NEXT: | | | `-ParenListExpr [[ADDR_48:0x[a-z0-9]*]] <col:9, col:15> 'NULL TYPE'
-// CHECK-NEXT: | | | |-IntegerLiteral [[ADDR_49:0x[a-z0-9]*]] <col:10> 'int' 1
-// CHECK-NEXT: | | | `-UnaryOperator [[ADDR_50:0x[a-z0-9]*]] <col:13, col:14> 'double *' prefix '&' cannot overflow
-// CHECK-NEXT: | | | `-DeclRefExpr [[ADDR_51:0x[a-z0-9]*]] <col:14> 'double' {{.*}}Var [[ADDR_45]] 't' 'double'
-// CHECK-NEXT: | | `-ReturnStmt [[ADDR_52:0x[a-z0-9]*]] <line:20:3, col:10>
-// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_53:0x[a-z0-9]*]] <col:10> 'int' 1
-// CHECK-NEXT: | |-FunctionDecl [[ADDR_54:0x[a-z0-9]*]] <line:16:1, line:21:1> line:16:1 also_before[implementation={extension(allow_templates)}] 'int (S<int>)'
-// CHECK-NEXT: | | |-TemplateArgument type 'int'
-// CHECK-NEXT: | | | `-BuiltinType [[ADDR_9]] 'int'
-// CHECK-NEXT: | | `-ParmVarDecl [[ADDR_55:0x[a-z0-9]*]] <col:17, col:22> col:22 s 'S<int>'
-// CHECK-NEXT: | `-FunctionDecl [[ADDR_56:0x[a-z0-9]*]] <col:1, line:21:1> line:16:1 also_before[implementation={extension(allow_templates)}] 'int (S<double>)'
-// CHECK-NEXT: | |-TemplateArgument type 'double'
-// CHECK-NEXT: | | `-BuiltinType [[ADDR_21]] 'double'
-// CHECK-NEXT: | `-ParmVarDecl [[ADDR_57:0x[a-z0-9]*]] <col:17, col:22> col:22 s 'S<double>'
-// CHECK-NEXT: |-FunctionTemplateDecl [[ADDR_58:0x[a-z0-9]*]] <line:22:1, line:23:19> col:5 implicit special
-// CHECK-NEXT: | |-TemplateTypeParmDecl [[ADDR_59:0x[a-z0-9]*]] <line:22:11, col:20> col:20 referenced typename depth 0 index 0 T
-// CHECK-NEXT: | |-FunctionDecl [[ADDR_60:0x[a-z0-9]*]] <line:23:1, col:19> col:5 special 'int (S<T>)'
-// CHECK-NEXT: | | |-ParmVarDecl [[ADDR_61:0x[a-z0-9]*]] <col:13, col:18> col:18 s 'S<T>'
-// CHECK-NEXT: | | `-OMPDeclareVariantAttr [[ADDR_62:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(allow_templates)}
-// CHECK-NEXT: | | `-DeclRefExpr [[ADDR_63:0x[a-z0-9]*]] <col:1> 'int (S<T>)' {{.*}}Function [[ADDR_64:0x[a-z0-9]*]] 'special[implementation={extension(allow_templates)}]' 'int (S<T>)'
-// CHECK-NEXT: | `-FunctionDecl [[ADDR_65:0x[a-z0-9]*]] <col:1, col:19> col:5 used special 'int (S<int>)'
-// CHECK-NEXT: | |-TemplateArgument type 'int'
-// CHECK-NEXT: | | `-BuiltinType [[ADDR_9]] 'int'
-// CHECK-NEXT: | |-ParmVarDecl [[ADDR_66:0x[a-z0-9]*]] <col:13, col:18> col:18 s 'S<int>'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_67:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(allow_templates)}
-// CHECK-NEXT: | `-DeclRefExpr [[ADDR_68:0x[a-z0-9]*]] <col:1> 'int (S<int>)' {{.*}}Function [[ADDR_69:0x[a-z0-9]*]] 'special[implementation={extension(allow_templates)}]' 'int (S<int>)'
-// CHECK-NEXT: |-FunctionTemplateDecl [[ADDR_70:0x[a-z0-9]*]] <line:22:1, line:27:1> line:23:1 special[implementation={extension(allow_templates)}]
-// CHECK-NEXT: | |-TemplateTypeParmDecl [[ADDR_59]] <line:22:11, col:20> col:20 referenced typename depth 0 index 0 T
-// CHECK-NEXT: | |-FunctionDecl [[ADDR_64]] <line:23:1, line:27:1> line:23:1 referenced special[implementation={extension(allow_templates)}] 'int (S<T>)'
-// CHECK-NEXT: | | |-ParmVarDecl [[ADDR_61]] <col:13, col:18> col:18 s 'S<T>'
-// CHECK-NEXT: | | `-CompoundStmt [[ADDR_71:0x[a-z0-9]*]] <col:21, line:27:1>
-// CHECK-NEXT: | | |-DeclStmt [[ADDR_72:0x[a-z0-9]*]] <line:24:3, col:6>
-// CHECK-NEXT: | | | `-VarDecl [[ADDR_73:0x[a-z0-9]*]] <col:3, col:5> col:5 referenced t 'T'
-// CHECK-NEXT: | | |-DeclStmt [[ADDR_74:0x[a-z0-9]*]] <line:25:3, col:16>
-// CHECK-NEXT: | | | `-VarDecl [[ADDR_75:0x[a-z0-9]*]] <col:3, col:15> col:8 q 'S<T>' callinit
-// CHECK-NEXT: | | | `-ParenListExpr [[ADDR_76:0x[a-z0-9]*]] <col:9, col:15> 'NULL TYPE'
-// CHECK-NEXT: | | | |-IntegerLiteral [[ADDR_77:0x[a-z0-9]*]] <col:10> 'int' 0
-// CHECK-NEXT: | | | `-UnaryOperator [[ADDR_78:0x[a-z0-9]*]] <col:13, col:14> '<dependent type>' prefix '&' cannot overflow
-// CHECK-NEXT: | | | `-DeclRefExpr [[ADDR_79:0x[a-z0-9]*]] <col:14> 'T' {{.*}}Var [[ADDR_73]] 't' 'T'
-// CHECK-NEXT: | | `-ReturnStmt [[ADDR_80:0x[a-z0-9]*]] <line:26:3, col:10>
-// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_81:0x[a-z0-9]*]] <col:10> 'int' 0
-// CHECK-NEXT: | `-FunctionDecl [[ADDR_69]] <line:23:1, line:27:1> line:23:1 special[implementation={extension(allow_templates)}] 'int (S<int>)'
-// CHECK-NEXT: | |-TemplateArgument type 'int'
-// CHECK-NEXT: | | `-BuiltinType [[ADDR_9]] 'int'
-// CHECK-NEXT: | |-ParmVarDecl [[ADDR_82:0x[a-z0-9]*]] <col:13, col:18> col:18 s 'S<int>'
-// CHECK-NEXT: | `-CompoundStmt [[ADDR_83:0x[a-z0-9]*]] <col:21, line:27:1>
-// CHECK-NEXT: | |-DeclStmt [[ADDR_84:0x[a-z0-9]*]] <line:24:3, col:6>
-// CHECK-NEXT: | | `-VarDecl [[ADDR_85:0x[a-z0-9]*]] <col:3, col:5> col:5 used t 'int'
-// CHECK-NEXT: | |-DeclStmt [[ADDR_86:0x[a-z0-9]*]] <line:25:3, col:16>
-// CHECK-NEXT: | | `-VarDecl [[ADDR_87:0x[a-z0-9]*]] <col:3, col:15> col:8 q 'S<int>' callinit
-// CHECK-NEXT: | | `-CXXConstructExpr [[ADDR_88:0x[a-z0-9]*]] <col:8, col:15> 'S<int>' 'void (int, int *)'
-// CHECK-NEXT: | | |-IntegerLiteral [[ADDR_77]] <col:10> 'int' 0
-// CHECK-NEXT: | | `-UnaryOperator [[ADDR_89:0x[a-z0-9]*]] <col:13, col:14> 'int *' prefix '&' cannot overflow
-// CHECK-NEXT: | | `-DeclRefExpr [[ADDR_90:0x[a-z0-9]*]] <col:14> 'int' {{.*}}Var [[ADDR_85]] 't' 'int'
-// CHECK-NEXT: | `-ReturnStmt [[ADDR_91:0x[a-z0-9]*]] <line:26:3, col:10>
-// CHECK-NEXT: | `-IntegerLiteral [[ADDR_81]] <col:10> 'int' 0
-// CHECK-NEXT: |-FunctionTemplateDecl [[ADDR_92:0x[a-z0-9]*]] <line:28:1, line:29:22> col:5 implicit also_after
-// CHECK-NEXT: | |-TemplateTypeParmDecl [[ADDR_93:0x[a-z0-9]*]] <line:28:11, col:20> col:20 referenced typename depth 0 index 0 T
-// CHECK-NEXT: | `-FunctionDecl [[ADDR_94:0x[a-z0-9]*]] <line:29:1, col:22> col:5 also_after 'int (S<T>)'
-// CHECK-NEXT: | |-ParmVarDecl [[ADDR_95:0x[a-z0-9]*]] <col:16, col:21> col:21 s 'S<T>'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_96:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(allow_templates)}
-// CHECK-NEXT: | `-DeclRefExpr [[ADDR_97:0x[a-z0-9]*]] <col:1> 'int (S<T>)' {{.*}}Function [[ADDR_98:0x[a-z0-9]*]] 'also_after[implementation={extension(allow_templates)}]' 'int (S<T>)'
-// CHECK-NEXT: |-FunctionTemplateDecl [[ADDR_99:0x[a-z0-9]*]] <line:28:1, line:34:1> line:29:1 also_after[implementation={extension(allow_templates)}]
-// CHECK-NEXT: | |-TemplateTypeParmDecl [[ADDR_93]] <line:28:11, col:20> col:20 referenced typename depth 0 index 0 T
-// CHECK-NEXT: | `-FunctionDecl [[ADDR_98]] <line:29:1, line:34:1> line:29:1 also_after[implementation={extension(allow_templates)}] 'int (S<T>)'
-// CHECK-NEXT: | |-ParmVarDecl [[ADDR_95]] <col:16, col:21> col:21 s 'S<T>'
-// CHECK-NEXT: | `-CompoundStmt [[ADDR_100:0x[a-z0-9]*]] <col:24, line:34:1>
-// CHECK-NEXT: | |-DeclStmt [[ADDR_101:0x[a-z0-9]*]] <line:31:3, col:11>
-// CHECK-NEXT: | | `-VarDecl [[ADDR_102:0x[a-z0-9]*]] <col:3, col:10> col:10 referenced t 'double'
-// CHECK-NEXT: | |-DeclStmt [[ADDR_103:0x[a-z0-9]*]] <line:32:3, col:18>
-// CHECK-NEXT: | | `-VarDecl [[ADDR_104:0x[a-z0-9]*]] <col:3, col:17> col:8 q 'S<T>' callinit
-// CHECK-NEXT: | | `-ParenListExpr [[ADDR_105:0x[a-z0-9]*]] <col:9, col:17> 'NULL TYPE'
-// CHECK-NEXT: | | |-FloatingLiteral [[ADDR_106:0x[a-z0-9]*]] <col:10> 'double' 2.000000e+00
-// CHECK-NEXT: | | `-UnaryOperator [[ADDR_107:0x[a-z0-9]*]] <col:15, col:16> 'double *' prefix '&' cannot overflow
-// CHECK-NEXT: | | `-DeclRefExpr [[ADDR_108:0x[a-z0-9]*]] <col:16> 'double' {{.*}}Var [[ADDR_102]] 't' 'double'
-// CHECK-NEXT: | `-ReturnStmt [[ADDR_109:0x[a-z0-9]*]] <line:33:3, col:10>
-// CHECK-NEXT: | `-IntegerLiteral [[ADDR_110:0x[a-z0-9]*]] <col:10> 'int' 2
-// CHECK-NEXT: |-FunctionTemplateDecl [[ADDR_111:0x[a-z0-9]*]] <line:37:1, line:40:1> line:38:5 also_after
-// CHECK-NEXT: | |-TemplateTypeParmDecl [[ADDR_112:0x[a-z0-9]*]] <line:37:11, col:20> col:20 referenced typename depth 0 index 0 T
-// CHECK-NEXT: | |-FunctionDecl [[ADDR_113:0x[a-z0-9]*]] <line:38:1, line:40:1> line:38:5 also_after 'int (T)'
-// CHECK-NEXT: | | |-ParmVarDecl [[ADDR_114:0x[a-z0-9]*]] <col:16, col:18> col:18 s 'T'
-// CHECK-NEXT: | | `-CompoundStmt [[ADDR_115:0x[a-z0-9]*]] <col:21, line:40:1>
-// CHECK-NEXT: | | `-ReturnStmt [[ADDR_116:0x[a-z0-9]*]] <line:39:3, col:10>
-// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_117:0x[a-z0-9]*]] <col:10> 'int' 0
-// CHECK-NEXT: | |-FunctionDecl [[ADDR_118:0x[a-z0-9]*]] <line:38:1, line:40:1> line:38:5 used also_after 'int (int)'
-// CHECK-NEXT: | | |-TemplateArgument type 'int'
-// CHECK-NEXT: | | | `-BuiltinType [[ADDR_9]] 'int'
-// CHECK-NEXT: | | |-ParmVarDecl [[ADDR_119:0x[a-z0-9]*]] <col:16, col:18> col:18 s 'int'
-// CHECK-NEXT: | | `-CompoundStmt [[ADDR_120:0x[a-z0-9]*]] <col:21, line:40:1>
-// CHECK-NEXT: | | `-ReturnStmt [[ADDR_121:0x[a-z0-9]*]] <line:39:3, col:10>
-// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_117]] <col:10> 'int' 0
-// CHECK-NEXT: | `-FunctionDecl [[ADDR_122:0x[a-z0-9]*]] <line:38:1, line:40:1> line:38:5 used also_after 'int (double)'
-// CHECK-NEXT: | |-TemplateArgument type 'double'
-// CHECK-NEXT: | | `-BuiltinType [[ADDR_21]] 'double'
-// CHECK-NEXT: | |-ParmVarDecl [[ADDR_123:0x[a-z0-9]*]] <col:16, col:18> col:18 s 'double'
-// CHECK-NEXT: | `-CompoundStmt [[ADDR_124:0x[a-z0-9]*]] <col:21, line:40:1>
-// CHECK-NEXT: | `-ReturnStmt [[ADDR_125:0x[a-z0-9]*]] <line:39:3, col:10>
-// CHECK-NEXT: | `-IntegerLiteral [[ADDR_117]] <col:10> 'int' 0
-// CHECK-NEXT: `-FunctionDecl [[ADDR_126:0x[a-z0-9]*]] <line:42:1, line:45:1> line:42:5 test 'int ({{.*}})'
-// CHECK-NEXT: `-CompoundStmt [[ADDR_127:0x[a-z0-9]*]] <col:12, line:45:1>
-// CHECK-NEXT: `-ReturnStmt [[ADDR_128:0x[a-z0-9]*]] <line:44:3, col:98>
-// CXX11-NEXT: `-ExprWithCleanups [[ADDR_129:0x[a-z0-9]*]] <col:10, col:98> 'int'
-// CHECK-NEXT: `-BinaryOperator [[ADDR_130:0x[a-z0-9]*]] <col:10, col:98> 'int' '+'
-// CHECK-NEXT: |-BinaryOperator [[ADDR_131:0x[a-z0-9]*]] <col:10, col:74> 'int' '+'
-// CHECK-NEXT: | |-BinaryOperator [[ADDR_132:0x[a-z0-9]*]] <col:10, col:57> 'int' '+'
-// CHECK-NEXT: | | |-BinaryOperator [[ADDR_133:0x[a-z0-9]*]] <col:10, col:39> 'int' '+'
-// CHECK-NEXT: | | | |-CallExpr [[ADDR_134:0x[a-z0-9]*]] <col:10, col:23> 'int'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr [[ADDR_135:0x[a-z0-9]*]] <col:10> 'int (*)(int)' <FunctionToPointerDecay>
-// CHECK-NEXT: | | | | | `-DeclRefExpr [[ADDR_136:0x[a-z0-9]*]] <col:10> 'int (int)' {{.*}}Function [[ADDR_32]] 'also_before' 'int (int)' (FunctionTemplate [[ADDR_22]] 'also_before')
-// CHECK-NEXT: | | | | `-IntegerLiteral [[ADDR_137:0x[a-z0-9]*]] <col:22> 'int' 0
-// CHECK-NEXT: | | | `-CallExpr [[ADDR_138:0x[a-z0-9]*]] <col:27, col:39> 'int'
-// CHECK-NEXT: | | | |-ImplicitCastExpr [[ADDR_139:0x[a-z0-9]*]] <col:27> 'int (*)(int)' <FunctionToPointerDecay>
-// CHECK-NEXT: | | | | `-DeclRefExpr [[ADDR_140:0x[a-z0-9]*]] <col:27> 'int (int)' {{.*}}Function [[ADDR_118]] 'also_after' 'int (int)' (FunctionTemplate [[ADDR_111]] 'also_after')
-// CHECK-NEXT: | | | `-IntegerLiteral [[ADDR_141:0x[a-z0-9]*]] <col:38> 'int' 0
-// CHECK-NEXT: | | `-CallExpr [[ADDR_142:0x[a-z0-9]*]] <col:43, col:57> 'int'
-// CHECK-NEXT: | | |-ImplicitCastExpr [[ADDR_143:0x[a-z0-9]*]] <col:43> 'int (*)(double)' <FunctionToPointerDecay>
-// CHECK-NEXT: | | | `-DeclRefExpr [[ADDR_144:0x[a-z0-9]*]] <col:43> 'int (double)' {{.*}}Function [[ADDR_36]] 'also_before' 'int (double)' (FunctionTemplate [[ADDR_22]] 'also_before')
-// CHECK-NEXT: | | `-FloatingLiteral [[ADDR_145:0x[a-z0-9]*]] <col:55> 'double' 0.000000e+00
-// CHECK-NEXT: | `-CallExpr [[ADDR_146:0x[a-z0-9]*]] <col:61, col:74> 'int'
-// CHECK-NEXT: | |-ImplicitCastExpr [[ADDR_147:0x[a-z0-9]*]] <col:61> 'int (*)(double)' <FunctionToPointerDecay>
-// CHECK-NEXT: | | `-DeclRefExpr [[ADDR_148:0x[a-z0-9]*]] <col:61> 'int (double)' {{.*}}Function [[ADDR_122]] 'also_after' 'int (double)' (FunctionTemplate [[ADDR_111]] 'also_after')
-// CHECK-NEXT: | `-FloatingLiteral [[ADDR_149:0x[a-z0-9]*]] <col:72> 'double' 0.000000e+00
-// CHECK-NEXT: `-PseudoObjectExpr [[ADDR_150:0x[a-z0-9]*]] <col:78, col:98> 'int'
-// CHECK-NEXT: |-CallExpr [[ADDR_151:0x[a-z0-9]*]] <col:78, col:98> 'int'
-// CHECK-NEXT: | |-ImplicitCastExpr [[ADDR_152:0x[a-z0-9]*]] <col:78> 'int (*)(S<int>)' <FunctionToPointerDecay>
-// CHECK-NEXT: | | `-DeclRefExpr [[ADDR_153:0x[a-z0-9]*]] <col:78> 'int (S<int>)' {{.*}}Function [[ADDR_65]] 'special' 'int (S<int>)' (FunctionTemplate [[ADDR_58]] 'special')
-// CXX11-NEXT: | `-CXXConstructExpr [[ADDR_154:0x[a-z0-9]*]] <col:86, col:97> 'S<int>' 'void (S<int> &&) noexcept' elidable
-// CXX11-NEXT: | `-MaterializeTemporaryExpr [[ADDR_155:0x[a-z0-9]*]] <col:86, col:97> 'S<int>' xvalue
-// CHECK-NEXT: | `-CXXTemporaryObjectExpr [[ADDR_156:0x[a-z0-9]*]] <col:86, col:97> 'S<int>' 'void (int, int *)'
-// CHECK-NEXT: | |-IntegerLiteral [[ADDR_157:0x[a-z0-9]*]] <col:93> 'int' 0
-// CHECK-NEXT: | `-ImplicitCastExpr [[ADDR_158:0x[a-z0-9]*]] <col:96> 'int *' <NullToPointer>
-// CHECK-NEXT: | `-IntegerLiteral [[ADDR_159:0x[a-z0-9]*]] <col:96> 'int' 0
-// CHECK-NEXT: `-CallExpr [[ADDR_160:0x[a-z0-9]*]] <line:23:1, line:44:98> 'int'
-// CHECK-NEXT: |-ImplicitCastExpr [[ADDR_161:0x[a-z0-9]*]] <line:23:1> 'int (*)(S<int>)' <FunctionToPointerDecay>
-// CHECK-NEXT: | `-DeclRefExpr [[ADDR_68]] <col:1> 'int (S<int>)' {{.*}}Function [[ADDR_69]] 'special[implementation={extension(allow_templates)}]' 'int (S<int>)'
-// CXX11-NEXT: `-CXXConstructExpr [[ADDR_162:0x[a-z0-9]*]] <line:44:86, col:97> 'S<int>' 'void (S<int> &&) noexcept' elidable
-// CXX11-NEXT: `-MaterializeTemporaryExpr [[ADDR_163:0x[a-z0-9]*]] <col:86, col:97> 'S<int>' xvalue
-// CXX11-NEXT: `-CXXTemporaryObjectExpr [[ADDR_156]] <col:86, col:97> 'S<int>' 'void (int, int *)'
-// CXX17-NEXT: `-CXXTemporaryObjectExpr [[ADDR_156]] <line:[[#]]:86, col:97> 'S<int>' 'void (int, int *)'
-// CHECK-NEXT: |-IntegerLiteral [[ADDR_157]] <col:93> 'int' 0
-// CHECK-NEXT: `-ImplicitCastExpr [[ADDR_158]] <col:96> 'int *' <NullToPointer>
-// CHECK-NEXT: `-IntegerLiteral [[ADDR_159]] <col:96> 'int' 0
+//CHECK: |-ClassTemplateDecl {{.*}} S
+//CHECK: | |-TemplateTypeParmDecl {{.*}} referenced typename depth 0 index 0 T
+//CHECK: | |-CXXRecordDecl {{.*}} struct S definition
+//CHECK: | | |-DefinitionData empty standard_layout trivially_copyable has_user_declared_ctor can_const_default_init
+//CHECK: | | | |-DefaultConstructor defaulted_is_constexpr
+//CHECK: | | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
+//CHECK: | | | |-MoveConstructor exists simple trivial needs_implicit
+//CHECK: | | | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param
+//CHECK: | | | |-MoveAssignment exists simple trivial needs_implicit
+//CHECK: | | | `-Destructor simple irrelevant trivial needs_implicit
+//CHECK: | | |-CXXRecordDecl {{.*}} implicit referenced struct S
+//CHECK: | | `-CXXConstructorDecl {{.*}} S<T> 'void (int, T *)' implicit-inline
+//CHECK: | | |-ParmVarDecl {{.*}} 'int'
+//CHECK: | | | `-typeDetails: BuiltinType {{.*}} 'int'
+//CHECK: | | |-ParmVarDecl {{.*}} 'T *'
+//CHECK: | | | `-typeDetails: PointerType {{.*}} 'T *' dependent
+//CHECK: | | | `-typeDetails: TemplateTypeParmType {{.*}} 'T' dependent depth 0 index 0
+//CHECK: | | | `-TemplateTypeParm {{.*}} 'T'
+//CHECK: | | `-CompoundStmt {{.*}}
+//CHECK: | |-ClassTemplateSpecializationDecl {{.*}} struct S definition implicit_instantiation
+//CHECK: | | |-DefinitionData pass_in_registers empty standard_layout trivially_copyable has_user_declared_ctor can_const_default_init
+//CHECK: | | | |-DefaultConstructor defaulted_is_constexpr
+//CHECK: | | | |-CopyConstructor simple trivial has_const_param implicit_has_const_param
+//CHECK: | | | |-MoveConstructor exists simple trivial
+//CHECK: | | | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param
+//CHECK: | | | |-MoveAssignment exists simple trivial needs_implicit
+//CHECK: | | | `-Destructor simple irrelevant trivial
+//CHECK: | | |-TemplateArgument type 'int'
+//CHECK: | | | `-typeDetails: BuiltinType {{.*}} 'int'
+//CHECK: | | |-CXXRecordDecl {{.*}} implicit struct S
+//CHECK: | | |-CXXConstructorDecl {{.*}} used S 'void (int, int *)' implicit_instantiation implicit-inline instantiated_from {{.*}}
+//CHECK: | | | |-ParmVarDecl {{.*}} 'int'
+//CHECK: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+//CHECK: | | | |-ParmVarDecl {{.*}} 'int *'
+//CHECK: | | | | `-typeDetails: PointerType {{.*}} 'int *'
+//CHECK: | | | | `-typeDetails: SubstTemplateTypeParmType {{.*}} 'int' sugar typename depth 0 index 0 T
+//CHECK: | | | | |-ClassTemplateSpecialization {{.*}} 'S'
+//CHECK: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+//CHECK: | | | `-CompoundStmt {{.*}}
+//CHECK: | | |-CXXConstructorDecl {{.*}} implicit constexpr S 'void (const S<int> &)' inline default trivial noexcept-unevaluated {{.*}}
+//CHECK: | | | `-ParmVarDecl {{.*}} 'const S<int> &'
+//CHECK: | | | `-typeDetails: LValueReferenceType {{.*}} 'const S<int> &'
+//CHECK: | | | `-qualTypeDetail: QualType {{.*}} 'const S<int>' const
+//CHECK: | | | `-typeDetails: ElaboratedType {{.*}} 'S<int>' sugar
+//CHECK: | | | `-typeDetails: RecordType {{.*}} 'S<int>'
+//CHECK: | | | `-ClassTemplateSpecialization {{.*}} 'S'
+//CHECK: | | |-CXXConstructorDecl {{.*}} implicit constexpr S 'void (S<int> &&)' inline default trivial noexcept-unevaluated {{.*}}
+//CHECK: | | | `-ParmVarDecl {{.*}} 'S<int> &&'
+//CHECK: | | | `-typeDetails: RValueReferenceType {{.*}} 'S<int> &&'
+//CHECK: | | | `-typeDetails: ElaboratedType {{.*}} 'S<int>' sugar
+//CHECK: | | | `-typeDetails: RecordType {{.*}} 'S<int>'
+//CHECK: | | | `-ClassTemplateSpecialization {{.*}} 'S'
+//CHECK: | | `-CXXDestructorDecl {{.*}} implicit referenced ~S 'void () noexcept' inline default trivial
+//CHECK: | `-ClassTemplateSpecializationDecl {{.*}} struct S
+//CHECK: | `-TemplateArgument type 'double'
+//CHECK: | `-typeDetails: BuiltinType {{.*}} 'double'
+//CHECK: |-FunctionTemplateDecl {{.*}} also_before
+//CHECK: | |-TemplateTypeParmDecl {{.*}} referenced typename depth 0 index 0 T
+//CHECK: | |-FunctionDecl {{.*}} also_before 'int (T)'
+//CHECK: | | |-ParmVarDecl {{.*}} s 'T'
+//CHECK: | | | `-typeDetails: TemplateTypeParmType {{.*}} 'T' dependent depth 0 index 0
+//CHECK: | | | `-TemplateTypeParm {{.*}} 'T'
+//CHECK: | | |-CompoundStmt {{.*}}
+//CHECK: | | | `-ReturnStmt {{.*}}
+//CHECK: | | | `-IntegerLiteral {{.*}} 'int' 0
+//CHECK: | | `-attrDetails: OMPDeclareVariantAttr {{.*}} <<invalid sloc>> Implicit implementation={extension(allow_templates)}
+//CHECK: | | `-DeclRefExpr {{.*}} 'int (S<T>)' Function {{.*}} 'also_before[implementation={extension(allow_templates)}]' 'int (S<T>)'
+//CHECK: | |-FunctionDecl {{.*}} used also_before 'int (int)' implicit_instantiation
+//CHECK: | | |-TemplateArgument type 'int'
+//CHECK: | | | `-typeDetails: BuiltinType {{.*}} 'int'
+//CHECK: | | |-ParmVarDecl {{.*}} s 'int'
+//CHECK: | | | `-typeDetails: SubstTemplateTypeParmType {{.*}} 'int' sugar typename depth 0 index 0 T
+//CHECK: | | | |-FunctionTemplate {{.*}} 'also_before'
+//CHECK: | | | `-typeDetails: BuiltinType {{.*}} 'int'
+//CHECK: | | `-CompoundStmt {{.*}}
+//CHECK: | | `-ReturnStmt {{.*}}
+//CHECK: | | `-IntegerLiteral {{.*}} 'int' 0
+//CHECK: | `-FunctionDecl {{.*}} used also_before 'int (double)' implicit_instantiation
+//CHECK: | |-TemplateArgument type 'double'
+//CHECK: | | `-typeDetails: BuiltinType {{.*}} 'double'
+//CHECK: | |-ParmVarDecl {{.*}} s 'double'
+//CHECK: | | `-typeDetails: SubstTemplateTypeParmType {{.*}} 'double' sugar typename depth 0 index 0 T
+//CHECK: | | |-FunctionTemplate {{.*}} 'also_before'
+//CHECK: | | `-typeDetails: BuiltinType {{.*}} 'double'
+//CHECK: | `-CompoundStmt {{.*}}
+//CHECK: | `-ReturnStmt {{.*}}
+//CHECK: | `-IntegerLiteral {{.*}} 'int' 0
+//CHECK: |-FunctionTemplateDecl {{.*}} also_before[implementation={extension(allow_templates)}]
+//CHECK: | |-TemplateTypeParmDecl {{.*}} referenced typename depth 0 index 0 T
+//CHECK: | |-FunctionDecl {{.*}} referenced also_before[implementation={extension(allow_templates)}] 'int (S<T>)'
+//CHECK: | | |-ParmVarDecl {{.*}} s 'S<T>'
+//CHECK: | | | `-typeDetails: ElaboratedType {{.*}} 'S<T>' sugar dependent
+//CHECK: | | | `-typeDetails: TemplateSpecializationType {{.*}} 'S<T>' dependent
+//CHECK: | | | |-name: 'S' qualified
+//CHECK: | | | | `-ClassTemplateDecl {{.*}} S
+//CHECK: | | | `-TemplateArgument type 'T':'type-parameter-0-0'
+//CHECK: | | | `-typeDetails: TemplateTypeParmType {{.*}} 'T' dependent depth 0 index 0
+//CHECK: | | | `-TemplateTypeParm {{.*}} 'T'
+//CHECK: | | `-CompoundStmt {{.*}}
+//CHECK: | | |-DeclStmt {{.*}}
+//CHECK: | | | `-VarDecl {{.*}} referenced t 'double'
+//CHECK: | | | `-typeDetails: BuiltinType {{.*}} 'double'
+//CHECK: | | |-DeclStmt {{.*}}
+//CHECK: | | | `-VarDecl {{.*}} q 'S<T>' callinit
+//CHECK: | | | |-ParenListExpr {{.*}} 'NULL TYPE'
+//CHECK: | | | | |-IntegerLiteral {{.*}} 'int' 1
+//CHECK: | | | | `-UnaryOperator {{.*}} 'double *' prefix '&' cannot overflow
+//CHECK: | | | | `-DeclRefExpr {{.*}} 'double' lvalue Var {{.*}} 't' 'double'
+//CHECK: | | | `-typeDetails: ElaboratedType {{.*}} 'S<T>' sugar dependent
+//CHECK: | | | `-typeDetails: TemplateSpecializationType {{.*}} 'S<T>' dependent
+//CHECK: | | | |-name: 'S' qualified
+//CHECK: | | | | `-ClassTemplateDecl {{.*}} S
+//CHECK: | | | `-TemplateArgument type 'T':'type-parameter-0-0'
+//CHECK: | | | `-typeDetails: TemplateTypeParmType {{.*}} 'T' dependent depth 0 index 0
+//CHECK: | | | `-TemplateTypeParm {{.*}} 'T'
+//CHECK: | | `-ReturnStmt {{.*}}
+//CHECK: | | `-IntegerLiteral {{.*}} 'int' 1
+//CHECK: | |-FunctionDecl {{.*}} also_before[implementation={extension(allow_templates)}] 'int (S<int>)' implicit_instantiation
+//CHECK: | | |-TemplateArgument type 'int'
+//CHECK: | | | `-typeDetails: BuiltinType {{.*}} 'int'
+//CHECK: | | `-ParmVarDecl {{.*}} s 'S<int>'
+//CHECK: | | `-typeDetails: ElaboratedType {{.*}} 'S<int>' sugar
+//CHECK: | | `-typeDetails: TemplateSpecializationType {{.*}} 'S<int>' sugar
+//CHECK: | | |-name: 'S' qualified
+//CHECK: | | | `-ClassTemplateDecl {{.*}} S
+//CHECK: | | |-TemplateArgument type 'int'
+//CHECK: | | | `-typeDetails: SubstTemplateTypeParmType {{.*}} 'int' sugar typename depth 0 index 0 T
+//CHECK: | | | |-FunctionTemplate {{.*}} 'also_before[implementation={extension(allow_templates)}]'
+//CHECK: | | | `-typeDetails: BuiltinType {{.*}} 'int'
+//CHECK: | | `-typeDetails: RecordType {{.*}} 'S<int>'
+//CHECK: | | `-ClassTemplateSpecialization {{.*}} 'S'
+//CHECK: | `-FunctionDecl {{.*}} also_before[implementation={extension(allow_templates)}] 'int (S<double>)' implicit_instantiation
+//CHECK: | |-TemplateArgument type 'double'
+//CHECK: | | `-typeDetails: BuiltinType {{.*}} 'double'
+//CHECK: | `-ParmVarDecl {{.*}} s 'S<double>'
+//CHECK: | `-typeDetails: ElaboratedType {{.*}} 'S<double>' sugar
+//CHECK: | `-typeDetails: TemplateSpecializationType {{.*}} 'S<double>' sugar
+//CHECK: | |-name: 'S' qualified
+//CHECK: | | `-ClassTemplateDecl {{.*}} S
+//CHECK: | |-TemplateArgument type 'double'
+//CHECK: | | `-typeDetails: SubstTemplateTypeParmType {{.*}} 'double' sugar typename depth 0 index 0 T
+//CHECK: | | |-FunctionTemplate {{.*}} 'also_before[implementation={extension(allow_templates)}]'
+//CHECK: | | `-typeDetails: BuiltinType {{.*}} 'double'
+//CHECK: | `-typeDetails: RecordType {{.*}} 'S<double>'
+//CHECK: | `-ClassTemplateSpecialization {{.*}} 'S'
+//CHECK: |-FunctionTemplateDecl {{.*}} implicit special
+//CHECK: | |-TemplateTypeParmDecl {{.*}} referenced typename depth 0 index 0 T
+//CHECK: | |-FunctionDecl {{.*}} special 'int (S<T>)'
+//CHECK: | | |-ParmVarDecl {{.*}} s 'S<T>'
+//CHECK: | | | `-typeDetails: ElaboratedType {{.*}} 'S<T>' sugar dependent
+//CHECK: | | | `-typeDetails: TemplateSpecializationType {{.*}} 'S<T>' dependent
+//CHECK: | | | |-name: 'S' qualified
+//CHECK: | | | | `-ClassTemplateDecl {{.*}} S
+//CHECK: | | | `-TemplateArgument type 'T':'type-parameter-0-0'
+//CHECK: | | | `-typeDetails: TemplateTypeParmType {{.*}} 'T' dependent depth 0 index 0
+//CHECK: | | | `-TemplateTypeParm {{.*}} 'T'
+//CHECK: | | `-attrDetails: OMPDeclareVariantAttr {{.*}} <<invalid sloc>> Implicit implementation={extension(allow_templates)}
+//CHECK: | | `-DeclRefExpr {{.*}} 'int (S<T>)' Function {{.*}} 'special[implementation={extension(allow_templates)}]' 'int (S<T>)'
+//CHECK: | `-FunctionDecl {{.*}} used special 'int (S<int>)' implicit_instantiation
+//CHECK: | |-TemplateArgument type 'int'
+//CHECK: | | `-typeDetails: BuiltinType {{.*}} 'int'
+//CHECK: | |-ParmVarDecl {{.*}} s 'S<int>'
+//CHECK: | | `-typeDetails: ElaboratedType {{.*}} 'S<int>' sugar
+//CHECK: | | `-typeDetails: TemplateSpecializationType {{.*}} 'S<int>' sugar
+//CHECK: | | |-name: 'S' qualified
+//CHECK: | | | `-ClassTemplateDecl {{.*}} S
+//CHECK: | | |-TemplateArgument type 'int'
+//CHECK: | | | `-typeDetails: SubstTemplateTypeParmType {{.*}} 'int' sugar typename depth 0 index 0 T
+//CHECK: | | | |-FunctionTemplate {{.*}} 'special'
+//CHECK: | | | `-typeDetails: BuiltinType {{.*}} 'int'
+//CHECK: | | `-typeDetails: RecordType {{.*}} 'S<int>'
+//CHECK: | | `-ClassTemplateSpecialization {{.*}} 'S'
+//CHECK: | `-attrDetails: OMPDeclareVariantAttr {{.*}} <<invalid sloc>> Implicit implementation={extension(allow_templates)}
+//CHECK: | `-DeclRefExpr {{.*}} 'int (S<int>)' Function {{.*}} 'special[implementation={extension(allow_templates)}]' 'int (S<int>)'
+//CHECK: |-FunctionTemplateDecl {{.*}} special[implementation={extension(allow_templates)}]
+//CHECK: | |-TemplateTypeParmDecl {{.*}} referenced typename depth 0 index 0 T
+//CHECK: | |-FunctionDecl {{.*}} referenced special[implementation={extension(allow_templates)}] 'int (S<T>)'
+//CHECK: | | |-ParmVarDecl {{.*}} s 'S<T>'
+//CHECK: | | | `-typeDetails: ElaboratedType {{.*}} 'S<T>' sugar dependent
+//CHECK: | | | `-typeDetails: TemplateSpecializationType {{.*}} 'S<T>' dependent
+//CHECK: | | | |-name: 'S' qualified
+//CHECK: | | | | `-ClassTemplateDecl {{.*}} S
+//CHECK: | | | `-TemplateArgument type 'T':'type-parameter-0-0'
+//CHECK: | | | `-typeDetails: TemplateTypeParmType {{.*}} 'T' dependent depth 0 index 0
+//CHECK: | | | `-TemplateTypeParm {{.*}} 'T'
+//CHECK: | | `-CompoundStmt {{.*}}
+//CHECK: | | |-DeclStmt {{.*}}
+//CHECK: | | | `-VarDecl {{.*}} referenced t 'T'
+//CHECK: | | | `-typeDetails: TemplateTypeParmType {{.*}} 'T' dependent depth 0 index 0
+//CHECK: | | | `-TemplateTypeParm {{.*}} 'T'
+//CHECK: | | |-DeclStmt {{.*}}
+//CHECK: | | | `-VarDecl {{.*}} q 'S<T>' callinit
+//CHECK: | | | |-ParenListExpr {{.*}} 'NULL TYPE'
+//CHECK: | | | | |-IntegerLiteral {{.*}} 'int' 0
+//CHECK: | | | | `-UnaryOperator {{.*}} '<dependent type>' prefix '&' cannot overflow
+//CHECK: | | | | `-DeclRefExpr {{.*}} 'T' lvalue Var {{.*}} 't' 'T'
+//CHECK: | | | `-typeDetails: ElaboratedType {{.*}} 'S<T>' sugar dependent
+//CHECK: | | | `-typeDetails: TemplateSpecializationType {{.*}} 'S<T>' dependent
+//CHECK: | | | |-name: 'S' qualified
+//CHECK: | | | | `-ClassTemplateDecl {{.*}} S
+//CHECK: | | | `-TemplateArgument type 'T':'type-parameter-0-0'
+//CHECK: | | | `-typeDetails: TemplateTypeParmType {{.*}} 'T' dependent depth 0 index 0
+//CHECK: | | | `-TemplateTypeParm {{.*}} 'T'
+//CHECK: | | `-ReturnStmt {{.*}}
+//CHECK: | | `-IntegerLiteral {{.*}} 'int' 0
+//CHECK: | `-FunctionDecl {{.*}} special[implementation={extension(allow_templates)}] 'int (S<int>)' implicit_instantiation
+//CHECK: | |-TemplateArgument type 'int'
+//CHECK: | | `-typeDetails: BuiltinType {{.*}} 'int'
+//CHECK: | |-ParmVarDecl {{.*}} s 'S<int>'
+//CHECK: | | `-typeDetails: ElaboratedType {{.*}} 'S<int>' sugar
+//CHECK: | | `-typeDetails: TemplateSpecializationType {{.*}} 'S<int>' sugar
+//CHECK: | | |-name: 'S' qualified
+//CHECK: | | | `-ClassTemplateDecl {{.*}} S
+//CHECK: | | |-TemplateArgument type 'int'
+//CHECK: | | | `-typeDetails: SubstTemplateTypeParmType {{.*}} 'int' sugar typename depth 0 index 0 T
+//CHECK: | | | |-FunctionTemplate {{.*}} 'special[implementation={extension(allow_templates)}]'
+//CHECK: | | | `-typeDetails: BuiltinType {{.*}} 'int'
+//CHECK: | | `-typeDetails: RecordType {{.*}} 'S<int>'
+//CHECK: | | `-ClassTemplateSpecialization {{.*}} 'S'
+//CHECK: | `-CompoundStmt {{.*}}
+//CHECK: | |-DeclStmt {{.*}}
+//CHECK: | | `-VarDecl {{.*}} used t 'int'
+//CHECK: | | `-typeDetails: SubstTemplateTypeParmType {{.*}} 'int' sugar typename depth 0 index 0 T
+//CHECK: | | |-Function {{.*}} 'special[implementation={extension(allow_templates)}]' 'int (S<int>)'
+//CHECK: | | `-typeDetails: BuiltinType {{.*}} 'int'
+//CHECK: | |-DeclStmt {{.*}}
+//CHECK: | | `-VarDecl {{.*}} q 'S<int>' callinit
+//CHECK: | | |-CXXConstructExpr {{.*}} 'S<int>' 'void (int, int *)'
+//CHECK: | | | |-IntegerLiteral {{.*}} 'int' 0
+//CHECK: | | | `-UnaryOperator {{.*}} 'int *' prefix '&' cannot overflow
+//CHECK: | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 't' 'int'
+//CHECK: | | `-typeDetails: ElaboratedType {{.*}} 'S<int>' sugar
+//CHECK: | | `-typeDetails: TemplateSpecializationType {{.*}} 'S<int>' sugar
+//CHECK: | | |-name: 'S' qualified
+//CHECK: | | | `-ClassTemplateDecl {{.*}} S
+//CHECK: | | |-TemplateArgument type 'int'
+//CHECK: | | | `-typeDetails: SubstTemplateTypeParmType {{.*}} 'int' sugar typename depth 0 index 0 T
+//CHECK: | | | |-Function {{.*}} 'special[implementation={extension(allow_templates)}]' 'int (S<int>)'
+//CHECK: | | | `-typeDetails: BuiltinType {{.*}} 'int'
+//CHECK: | | `-typeDetails: RecordType {{.*}} 'S<int>'
+//CHECK: | | `-ClassTemplateSpecialization {{.*}} 'S'
+//CHECK: | `-ReturnStmt {{.*}}
+//CHECK: | `-IntegerLiteral {{.*}} 'int' 0
+//CHECK: |-FunctionTemplateDecl {{.*}} implicit also_after
+//CHECK: | |-TemplateTypeParmDecl {{.*}} referenced typename depth 0 index 0 T
+//CHECK: | `-FunctionDecl {{.*}} also_after 'int (S<T>)'
+//CHECK: | |-ParmVarDecl {{.*}} s 'S<T>'
+//CHECK: | | `-typeDetails: ElaboratedType {{.*}} 'S<T>' sugar dependent
+//CHECK: | | `-typeDetails: TemplateSpecializationType {{.*}} 'S<T>' dependent
+//CHECK: | | |-name: 'S' qualified
+//CHECK: | | | `-ClassTemplateDecl {{.*}} S
+//CHECK: | | `-TemplateArgument type 'T':'type-parameter-0-0'
+//CHECK: | | `-typeDetails: TemplateTypeParmType {{.*}} 'T' dependent depth 0 index 0
+//CHECK: | | `-TemplateTypeParm {{.*}} 'T'
+//CHECK: | `-attrDetails: OMPDeclareVariantAttr {{.*}} <<invalid sloc>> Implicit implementation={extension(allow_templates)}
+//CHECK: | `-DeclRefExpr {{.*}} 'int (S<T>)' Function {{.*}} 'also_after[implementation={extension(allow_templates)}]' 'int (S<T>)'
+//CHECK: |-FunctionTemplateDecl {{.*}} also_after[implementation={extension(allow_templates)}]
+//CHECK: | |-TemplateTypeParmDecl {{.*}} referenced typename depth 0 index 0 T
+//CHECK: | `-FunctionDecl {{.*}} also_after[implementation={extension(allow_templates)}] 'int (S<T>)'
+//CHECK: | |-ParmVarDecl {{.*}} s 'S<T>'
+//CHECK: | | `-typeDetails: ElaboratedType {{.*}} 'S<T>' sugar dependent
+//CHECK: | | `-typeDetails: TemplateSpecializationType {{.*}} 'S<T>' dependent
+//CHECK: | | |-name: 'S' qualified
+//CHECK: | | | `-ClassTemplateDecl {{.*}} S
+//CHECK: | | `-TemplateArgument type 'T':'type-parameter-0-0'
+//CHECK: | | `-typeDetails: TemplateTypeParmType {{.*}} 'T' dependent depth 0 index 0
+//CHECK: | | `-TemplateTypeParm {{.*}} 'T'
+//CHECK: | `-CompoundStmt {{.*}}
+//CHECK: | |-DeclStmt {{.*}}
+//CHECK: | | `-VarDecl {{.*}} referenced t 'double'
+//CHECK: | | `-typeDetails: BuiltinType {{.*}} 'double'
+//CHECK: | |-DeclStmt {{.*}}
+//CHECK: | | `-VarDecl {{.*}} q 'S<T>' callinit
+//CHECK: | | |-ParenListExpr {{.*}} 'NULL TYPE'
+//CHECK: | | | |-FloatingLiteral {{.*}} 'double' 2.000000e+00
+//CHECK: | | | `-UnaryOperator {{.*}} 'double *' prefix '&' cannot overflow
+//CHECK: | | | `-DeclRefExpr {{.*}} 'double' lvalue Var {{.*}} 't' 'double'
+//CHECK: | | `-typeDetails: ElaboratedType {{.*}} 'S<T>' sugar dependent
+//CHECK: | | `-typeDetails: TemplateSpecializationType {{.*}} 'S<T>' dependent
+//CHECK: | | |-name: 'S' qualified
+//CHECK: | | | `-ClassTemplateDecl {{.*}} S
+//CHECK: | | `-TemplateArgument type 'T':'type-parameter-0-0'
+//CHECK: | | `-typeDetails: TemplateTypeParmType {{.*}} 'T' dependent depth 0 index 0
+//CHECK: | | `-TemplateTypeParm {{.*}} 'T'
+//CHECK: | `-ReturnStmt {{.*}}
+//CHECK: | `-IntegerLiteral {{.*}} 'int' 2
+//CHECK: |-FunctionTemplateDecl {{.*}} also_after
+//CHECK: | |-TemplateTypeParmDecl {{.*}} referenced typename depth 0 index 0 T
+//CHECK: | |-FunctionDecl {{.*}} also_after 'int (T)'
+//CHECK: | | |-ParmVarDecl {{.*}} s 'T'
+//CHECK: | | | `-typeDetails: TemplateTypeParmType {{.*}} 'T' dependent depth 0 index 0
+//CHECK: | | | `-TemplateTypeParm {{.*}} 'T'
+//CHECK: | | `-CompoundStmt {{.*}}
+//CHECK: | | `-ReturnStmt {{.*}}
+//CHECK: | | `-IntegerLiteral {{.*}} 'int' 0
+//CHECK: | |-FunctionDecl {{.*}} used also_after 'int (int)' implicit_instantiation
+//CHECK: | | |-TemplateArgument type 'int'
+//CHECK: | | | `-typeDetails: BuiltinType {{.*}} 'int'
+//CHECK: | | |-ParmVarDecl {{.*}} s 'int'
+//CHECK: | | | `-typeDetails: SubstTemplateTypeParmType {{.*}} 'int' sugar typename depth 0 index 0 T
+//CHECK: | | | |-FunctionTemplate {{.*}} 'also_after'
+//CHECK: | | | `-typeDetails: BuiltinType {{.*}} 'int'
+//CHECK: | | `-CompoundStmt {{.*}}
+//CHECK: | | `-ReturnStmt {{.*}}
+//CHECK: | | `-IntegerLiteral {{.*}} 'int' 0
+//CHECK: | `-FunctionDecl {{.*}} used also_after 'int (double)' implicit_instantiation
+//CHECK: | |-TemplateArgument type 'double'
+//CHECK: | | `-typeDetails: BuiltinType {{.*}} 'double'
+//CHECK: | |-ParmVarDecl {{.*}} s 'double'
+//CHECK: | | `-typeDetails: SubstTemplateTypeParmType {{.*}} 'double' sugar typename depth 0 index 0 T
+//CHECK: | | |-FunctionTemplate {{.*}} 'also_after'
+//CHECK: | | `-typeDetails: BuiltinType {{.*}} 'double'
+//CHECK: | `-CompoundStmt {{.*}}
+//CHECK: | `-ReturnStmt {{.*}}
+//CHECK: | `-IntegerLiteral {{.*}} 'int' 0
+//CHECK: `-FunctionDecl {{.*}} test 'int ()'
+//CHECK: `-CompoundStmt {{.*}}
+//CHECK: `-ReturnStmt {{.*}}
+//CHECK: `-BinaryOperator {{.*}} 'int' '+'
+//CHECK: |-BinaryOperator {{.*}} 'int' '+'
+//CHECK: | |-BinaryOperator {{.*}} 'int' '+'
+//CHECK: | | |-BinaryOperator {{.*}} 'int' '+'
+//CHECK: | | | |-CallExpr {{.*}} 'int'
+//CHECK: | | | | |-ImplicitCastExpr {{.*}} 'int (*)(int)' <FunctionToPointerDecay>
+//CHECK: | | | | | `-DeclRefExpr {{.*}} 'int (int)' lvalue Function {{.*}} 'also_before' 'int (int)' (FunctionTemplate {{.*}} 'also_before')
+//CHECK: | | | | `-IntegerLiteral {{.*}} 'int' 0
+//CHECK: | | | `-CallExpr {{.*}} 'int'
+//CHECK: | | | |-ImplicitCastExpr {{.*}} 'int (*)(int)' <FunctionToPointerDecay>
+//CHECK: | | | | `-DeclRefExpr {{.*}} 'int (int)' lvalue Function {{.*}} 'also_after' 'int (int)' (FunctionTemplate {{.*}} 'also_after')
+//CHECK: | | | `-IntegerLiteral {{.*}} 'int' 0
+//CHECK: | | `-CallExpr {{.*}} 'int'
+//CHECK: | | |-ImplicitCastExpr {{.*}} 'int (*)(double)' <FunctionToPointerDecay>
+//CHECK: | | | `-DeclRefExpr {{.*}} 'int (double)' lvalue Function {{.*}} 'also_before' 'int (double)' (FunctionTemplate {{.*}} 'also_before')
+//CHECK: | | `-FloatingLiteral {{.*}} 'double' 0.000000e+00
+//CHECK: | `-CallExpr {{.*}} 'int'
+//CHECK: | |-ImplicitCastExpr {{.*}} 'int (*)(double)' <FunctionToPointerDecay>
+//CHECK: | | `-DeclRefExpr {{.*}} 'int (double)' lvalue Function {{.*}} 'also_after' 'int (double)' (FunctionTemplate {{.*}} 'also_after')
+//CHECK: | `-FloatingLiteral {{.*}} 'double' 0.000000e+00
+//CHECK: `-PseudoObjectExpr {{.*}} 'int'
+//CHECK: |-CallExpr {{.*}} 'int'
+//CHECK: | |-ImplicitCastExpr {{.*}} 'int (*)(S<int>)' <FunctionToPointerDecay>
+//CHECK: | | `-DeclRefExpr {{.*}} 'int (S<int>)' lvalue Function {{.*}} 'special' 'int (S<int>)' (FunctionTemplate {{.*}} 'special')
+//CHECK: | `-CXXTemporaryObjectExpr {{.*}} 'S<int>' 'void (int, int *)'
+//CHECK: | |-IntegerLiteral {{.*}} 'int' 0
+//CHECK: | `-ImplicitCastExpr {{.*}} 'int *' <NullToPointer>
+//CHECK: | `-IntegerLiteral {{.*}} 'int' 0
+//CHECK: `-CallExpr {{.*}} 'int'
+//CHECK: |-ImplicitCastExpr {{.*}} 'int (*)(S<int>)' <FunctionToPointerDecay>
+//CHECK: | `-DeclRefExpr {{.*}} 'int (S<int>)' Function {{.*}} 'special[implementation={extension(allow_templates)}]' 'int (S<int>)'
+//CHECK: `-CXXTemporaryObjectExpr {{.*}} 'S<int>' 'void (int, int *)'
+//CHECK: |-IntegerLiteral {{.*}} 'int' 0
+//CHECK: `-ImplicitCastExpr {{.*}} 'int *' <NullToPointer>
+//CHECK: `-IntegerLiteral {{.*}} 'int' 0
\ No newline at end of file
diff --git a/clang/test/AST/ast-dump-openmp-begin-declare-variant_template_4.cpp b/clang/test/AST/ast-dump-openmp-begin-declare-variant_template_4.cpp
index 831b353e3ae7e..a81a8052a33e7 100644
--- a/clang/test/AST/ast-dump-openmp-begin-declare-variant_template_4.cpp
+++ b/clang/test/AST/ast-dump-openmp-begin-declare-variant_template_4.cpp
@@ -37,9 +37,9 @@ int test() {
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_6:0x[a-z0-9]*]] <col:10> 'int' 0
// CHECK-NEXT: | `-FunctionDecl [[ADDR_7:0x[a-z0-9]*]] <line:6:1, line:8:1> line:6:5 used template_number_mismatch_1 'int ({{.*}})'
// CHECK-NEXT: | |-TemplateArgument type 'int'
-// CHECK-NEXT: | | `-BuiltinType [[ADDR_8:0x[a-z0-9]*]] 'int'
+// CHECK-NEXT: | | `-typeDetails: BuiltinType [[ADDR_8:0x[a-z0-9]*]] 'int'
// CHECK-NEXT: | |-TemplateArgument type 'float'
-// CHECK-NEXT: | | `-BuiltinType [[ADDR_9:0x[a-z0-9]*]] 'float'
+// CHECK-NEXT: | | `-typeDetails: BuiltinType [[ADDR_9:0x[a-z0-9]*]] 'float'
// CHECK-NEXT: | `-CompoundStmt [[ADDR_10:0x[a-z0-9]*]] <col:34, line:8:1>
// CHECK-NEXT: | `-ReturnStmt [[ADDR_11:0x[a-z0-9]*]] <line:7:3, col:10>
// CHECK-NEXT: | `-IntegerLiteral [[ADDR_6]] <col:10> 'int' 0
@@ -53,7 +53,7 @@ int test() {
// CHECK-NEXT: |-FunctionTemplateDecl [[ADDR_19:0x[a-z0-9]*]] <line:16:1, line:17:32> col:5 implicit template_number_mismatch_1
// CHECK-NEXT: | |-TemplateTypeParmDecl [[ADDR_20:0x[a-z0-9]*]] <line:16:11, col:20> col:20 typename depth 0 index 0 Q
// CHECK-NEXT: | `-FunctionDecl [[ADDR_21:0x[a-z0-9]*]] <line:17:1, col:32> col:5 template_number_mismatch_1 'int ({{.*}})'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_22:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(allow_templates)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_22:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(allow_templates)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_23:0x[a-z0-9]*]] <col:1> 'int ({{.*}})' {{.*}}Function [[ADDR_24:0x[a-z0-9]*]] 'template_number_mismatch_1[implementation={extension(allow_templates)}]' 'int ({{.*}})'
// CHECK-NEXT: |-FunctionTemplateDecl [[ADDR_25:0x[a-z0-9]*]] <line:16:1, line:19:1> line:17:1 template_number_mismatch_1[implementation={extension(allow_templates)}]
// CHECK-NEXT: | |-TemplateTypeParmDecl [[ADDR_20]] <line:16:11, col:20> col:20 typename depth 0 index 0 Q
@@ -64,12 +64,12 @@ int test() {
// CHECK-NEXT: |-FunctionTemplateDecl [[ADDR_29:0x[a-z0-9]*]] <line:20:1, line:21:32> col:5 implicit template_number_mismatch_2
// CHECK-NEXT: | |-TemplateTypeParmDecl [[ADDR_30:0x[a-z0-9]*]] <line:20:11, col:20> col:20 typename depth 0 index 0 Q
// CHECK-NEXT: | |-FunctionDecl [[ADDR_31:0x[a-z0-9]*]] <line:21:1, col:32> col:5 template_number_mismatch_2 'int ({{.*}})'
-// CHECK-NEXT: | | `-OMPDeclareVariantAttr [[ADDR_32:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(allow_templates)}
+// CHECK-NEXT: | | `-attrDetails: OMPDeclareVariantAttr [[ADDR_32:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(allow_templates)}
// CHECK-NEXT: | | `-DeclRefExpr [[ADDR_33:0x[a-z0-9]*]] <col:1> 'int ({{.*}})' {{.*}}Function [[ADDR_34:0x[a-z0-9]*]] 'template_number_mismatch_2[implementation={extension(allow_templates)}]' 'int ({{.*}})'
// CHECK-NEXT: | `-FunctionDecl [[ADDR_35:0x[a-z0-9]*]] <col:1, col:32> col:5 used template_number_mismatch_2 'int ({{.*}})'
// CHECK-NEXT: | |-TemplateArgument type 'double'
-// CHECK-NEXT: | | `-BuiltinType [[ADDR_36:0x[a-z0-9]*]] 'double'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_37:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(allow_templates)}
+// CHECK-NEXT: | | `-typeDetails: BuiltinType [[ADDR_36:0x[a-z0-9]*]] 'double'
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_37:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(allow_templates)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_38:0x[a-z0-9]*]] <col:1> 'int ({{.*}})' {{.*}}Function [[ADDR_39:0x[a-z0-9]*]] 'template_number_mismatch_2[implementation={extension(allow_templates)}]' 'int ({{.*}})'
// CHECK-NEXT: |-FunctionTemplateDecl [[ADDR_40:0x[a-z0-9]*]] <line:20:1, line:23:1> line:21:1 template_number_mismatch_2[implementation={extension(allow_templates)}]
// CHECK-NEXT: | |-TemplateTypeParmDecl [[ADDR_30]] <line:20:11, col:20> col:20 typename depth 0 index 0 Q
@@ -79,7 +79,7 @@ int test() {
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_43:0x[a-z0-9]*]] <col:10> 'int' 0
// CHECK-NEXT: | `-FunctionDecl [[ADDR_39]] <line:21:1, line:23:1> line:21:1 template_number_mismatch_2[implementation={extension(allow_templates)}] 'int ({{.*}})'
// CHECK-NEXT: | |-TemplateArgument type 'double'
-// CHECK-NEXT: | | `-BuiltinType [[ADDR_36]] 'double'
+// CHECK-NEXT: | | `-typeDetails: BuiltinType [[ADDR_36]] 'double'
// CHECK-NEXT: | `-CompoundStmt [[ADDR_44:0x[a-z0-9]*]] <col:34, line:23:1>
// CHECK-NEXT: | `-ReturnStmt [[ADDR_45:0x[a-z0-9]*]] <line:22:3, col:10>
// CHECK-NEXT: | `-IntegerLiteral [[ADDR_43]] <col:10> 'int' 0
diff --git a/clang/test/AST/ast-dump-openmp-cancel.c b/clang/test/AST/ast-dump-openmp-cancel.c
index ce695b1507921..2879feb45dff5 100644
--- a/clang/test/AST/ast-dump-openmp-cancel.c
+++ b/clang/test/AST/ast-dump-openmp-cancel.c
@@ -16,5 +16,5 @@ void test(void) {
// CHECK-NEXT: |-CompoundStmt {{.*}} <line:5:3, line:7:3>
// CHECK-NEXT: | `-OMPCancelDirective {{.*}} <line:6:1, col:28> openmp_standalone_directive
// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-cancel.c:4:1) *const restrict'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-cancel.c:4:1) *const restrict'
diff --git a/clang/test/AST/ast-dump-openmp-cancellation-point.c b/clang/test/AST/ast-dump-openmp-cancellation-point.c
index 62cd236950805..37315b3ffba57 100644
--- a/clang/test/AST/ast-dump-openmp-cancellation-point.c
+++ b/clang/test/AST/ast-dump-openmp-cancellation-point.c
@@ -16,5 +16,5 @@ void test(void) {
// CHECK-NEXT: |-CompoundStmt {{.*}} <line:5:3, line:7:3>
// CHECK-NEXT: | `-OMPCancellationPointDirective {{.*}} <line:6:1, col:40> openmp_standalone_directive
// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-cancellation-point.c:4:1) *const restrict'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-cancellation-point.c:4:1) *const restrict'
diff --git a/clang/test/AST/ast-dump-openmp-declare-variant-extensions.c b/clang/test/AST/ast-dump-openmp-declare-variant-extensions.c
index c2a863b16b3f7..9f79a7aeb0bd8 100644
--- a/clang/test/AST/ast-dump-openmp-declare-variant-extensions.c
+++ b/clang/test/AST/ast-dump-openmp-declare-variant-extensions.c
@@ -124,82 +124,82 @@ int test(void) {
// CHECK-NEXT: | |-CompoundStmt [[ADDR_35:0x[a-z0-9]*]] <col:17, col:29>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_36:0x[a-z0-9]*]] <col:19, col:26>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_37:0x[a-z0-9]*]] <col:26> 'int' 3
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_38:0x[a-z0-9]*]] <line:19:1, col:107> Implicit implementation={extension(match_any)}, device={kind(cpu, gpu)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_38:0x[a-z0-9]*]] <line:19:1, col:107> Implicit implementation={extension(match_any)}, device={kind(cpu, gpu)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_39:0x[a-z0-9]*]] <col:29> 'int ({{.*}})' {{.*}}Function [[ADDR_0]] 'picked1' 'int ({{.*}})' non_odr_use_unevaluated
// CHECK-NEXT: |-FunctionDecl [[ADDR_40:0x[a-z0-9]*]] <line:23:1, col:29> col:5 used base2 'int ({{.*}})'
// CHECK-NEXT: | |-CompoundStmt [[ADDR_41:0x[a-z0-9]*]] <col:17, col:29>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_42:0x[a-z0-9]*]] <col:19, col:26>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_43:0x[a-z0-9]*]] <col:26> 'int' 4
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_44:0x[a-z0-9]*]] <line:22:1, col:109> Implicit implementation={extension(match_none)}, device={kind(gpu, fpga)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_44:0x[a-z0-9]*]] <line:22:1, col:109> Implicit implementation={extension(match_none)}, device={kind(gpu, fpga)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_45:0x[a-z0-9]*]] <col:29> 'int ({{.*}})' {{.*}}Function [[ADDR_4]] 'picked2' 'int ({{.*}})' non_odr_use_unevaluated
// CHECK-NEXT: |-FunctionDecl [[ADDR_46:0x[a-z0-9]*]] <line:26:1, col:29> col:5 used base3 'int ({{.*}})'
// CHECK-NEXT: | |-CompoundStmt [[ADDR_47:0x[a-z0-9]*]] <col:17, col:29>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_48:0x[a-z0-9]*]] <col:19, col:26>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_49:0x[a-z0-9]*]] <col:26> 'int' 5
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_50:0x[a-z0-9]*]] <line:25:1, col:120> Implicit implementation={vendor(pgi), extension(match_any)}, device={kind(cpu, gpu)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_50:0x[a-z0-9]*]] <line:25:1, col:120> Implicit implementation={vendor(pgi), extension(match_any)}, device={kind(cpu, gpu)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_51:0x[a-z0-9]*]] <col:29> 'int ({{.*}})' {{.*}}Function [[ADDR_8]] 'picked3' 'int ({{.*}})' non_odr_use_unevaluated
// CHECK-NEXT: |-FunctionDecl [[ADDR_52:0x[a-z0-9]*]] <line:29:1, col:29> col:5 used base4 'int ({{.*}})'
// CHECK-NEXT: | |-CompoundStmt [[ADDR_53:0x[a-z0-9]*]] <col:17, col:29>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_54:0x[a-z0-9]*]] <col:19, col:26>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_55:0x[a-z0-9]*]] <col:26> 'int' 6
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_56:0x[a-z0-9]*]] <line:28:1, col:130> Implicit user={condition(0)}, implementation={extension(match_none)}, device={kind(gpu, fpga)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_56:0x[a-z0-9]*]] <line:28:1, col:130> Implicit user={condition(0)}, implementation={extension(match_none)}, device={kind(gpu, fpga)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_57:0x[a-z0-9]*]] <col:29> 'int ({{.*}})' {{.*}}Function [[ADDR_9]] 'picked4' 'int ({{.*}})' non_odr_use_unevaluated
// CHECK-NEXT: |-FunctionDecl [[ADDR_58:0x[a-z0-9]*]] <line:32:1, col:29> col:5 used base5 'int ({{.*}})'
// CHECK-NEXT: | |-CompoundStmt [[ADDR_59:0x[a-z0-9]*]] <col:17, col:29>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_60:0x[a-z0-9]*]] <col:19, col:26>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_61:0x[a-z0-9]*]] <col:26> 'int' 7
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_62:0x[a-z0-9]*]] <line:31:1, col:123> Implicit user={condition(1)}, implementation={extension(match_all)}, device={kind(cpu)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_62:0x[a-z0-9]*]] <line:31:1, col:123> Implicit user={condition(1)}, implementation={extension(match_all)}, device={kind(cpu)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_63:0x[a-z0-9]*]] <col:29> 'int ({{.*}})' {{.*}}Function [[ADDR_10]] 'picked5' 'int ({{.*}})' non_odr_use_unevaluated
// CHECK-NEXT: |-FunctionDecl [[ADDR_64:0x[a-z0-9]*]] <line:35:1, col:29> col:5 used base6 'int ({{.*}})'
// CHECK-NEXT: | |-CompoundStmt [[ADDR_65:0x[a-z0-9]*]] <col:17, col:29>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_66:0x[a-z0-9]*]] <col:19, col:26>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_67:0x[a-z0-9]*]] <col:26> 'int' 0
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_68:0x[a-z0-9]*]] <line:34:1, col:112> Implicit implementation={extension(match_any)}, device={kind(gpu, fpga)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_68:0x[a-z0-9]*]] <line:34:1, col:112> Implicit implementation={extension(match_any)}, device={kind(gpu, fpga)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_69:0x[a-z0-9]*]] <col:29> 'int ({{.*}})' {{.*}}Function [[ADDR_22]] 'not_picked1' 'int ({{.*}})' non_odr_use_unevaluated
// CHECK-NEXT: |-FunctionDecl [[ADDR_70:0x[a-z0-9]*]] <line:38:1, col:29> col:5 used base7 'int ({{.*}})'
// CHECK-NEXT: | |-CompoundStmt [[ADDR_71:0x[a-z0-9]*]] <col:17, col:29>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_72:0x[a-z0-9]*]] <col:19, col:26>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_73:0x[a-z0-9]*]] <col:26> 'int' 0
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_74:0x[a-z0-9]*]] <line:37:1, col:112> Implicit implementation={extension(match_none)}, device={kind(gpu, cpu)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_74:0x[a-z0-9]*]] <line:37:1, col:112> Implicit implementation={extension(match_none)}, device={kind(gpu, cpu)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_75:0x[a-z0-9]*]] <col:29> 'int ({{.*}})' {{.*}}Function [[ADDR_26]] 'not_picked2' 'int ({{.*}})' non_odr_use_unevaluated
// CHECK-NEXT: |-FunctionDecl [[ADDR_76:0x[a-z0-9]*]] <line:41:1, col:29> col:5 used base8 'int ({{.*}})'
// CHECK-NEXT: | |-CompoundStmt [[ADDR_77:0x[a-z0-9]*]] <col:17, col:29>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_78:0x[a-z0-9]*]] <col:19, col:26>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_79:0x[a-z0-9]*]] <col:26> 'int' 0
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_80:0x[a-z0-9]*]] <line:40:1, col:126> Implicit implementation={vendor(llvm), extension(match_any)}, device={kind(fpga, gpu)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_80:0x[a-z0-9]*]] <line:40:1, col:126> Implicit implementation={vendor(llvm), extension(match_any)}, device={kind(fpga, gpu)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_81:0x[a-z0-9]*]] <col:29> 'int ({{.*}})' {{.*}}Function [[ADDR_30]] 'not_picked3' 'int ({{.*}})' non_odr_use_unevaluated
// CHECK-NEXT: |-FunctionDecl [[ADDR_82:0x[a-z0-9]*]] <line:44:1, col:29> col:5 used base9 'int ({{.*}})'
// CHECK-NEXT: | |-CompoundStmt [[ADDR_83:0x[a-z0-9]*]] <col:17, col:29>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_84:0x[a-z0-9]*]] <col:19, col:26>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_85:0x[a-z0-9]*]] <col:26> 'int' 0
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_86:0x[a-z0-9]*]] <line:43:1, col:134> Implicit user={condition(1)}, implementation={extension(match_none)}, device={kind(gpu, fpga)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_86:0x[a-z0-9]*]] <line:43:1, col:134> Implicit user={condition(1)}, implementation={extension(match_none)}, device={kind(gpu, fpga)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_87:0x[a-z0-9]*]] <col:29> 'int ({{.*}})' {{.*}}Function [[ADDR_31]] 'not_picked4' 'int ({{.*}})' non_odr_use_unevaluated
// CHECK-NEXT: |-FunctionDecl [[ADDR_88:0x[a-z0-9]*]] <line:47:1, col:30> col:5 used base10 'int ({{.*}})'
// CHECK-NEXT: | |-CompoundStmt [[ADDR_89:0x[a-z0-9]*]] <col:18, col:30>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_90:0x[a-z0-9]*]] <col:20, col:27>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_91:0x[a-z0-9]*]] <col:27> 'int' 0
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_92:0x[a-z0-9]*]] <line:46:1, col:132> Implicit user={condition(1)}, implementation={extension(match_all)}, device={kind(cpu, gpu)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_92:0x[a-z0-9]*]] <line:46:1, col:132> Implicit user={condition(1)}, implementation={extension(match_all)}, device={kind(cpu, gpu)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_93:0x[a-z0-9]*]] <col:29> 'int ({{.*}})' {{.*}}Function [[ADDR_32]] 'not_picked5' 'int ({{.*}})' non_odr_use_unevaluated
// CHECK-NEXT: |-FunctionDecl [[ADDR_94:0x[a-z0-9]*]] <line:50:1, col:30> col:5 used base11 'int ({{.*}})'
// CHECK-NEXT: | |-CompoundStmt [[ADDR_95:0x[a-z0-9]*]] <col:18, col:30>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_96:0x[a-z0-9]*]] <col:20, col:27>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_97:0x[a-z0-9]*]] <col:27> 'int' 0
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_98:0x[a-z0-9]*]] <line:49:1, col:86> Implicit implementation={extension(match_any)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_98:0x[a-z0-9]*]] <line:49:1, col:86> Implicit implementation={extension(match_any)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_99:0x[a-z0-9]*]] <col:29> 'int ({{.*}})' {{.*}}Function [[ADDR_33]] 'not_picked6' 'int ({{.*}})' non_odr_use_unevaluated
// CHECK-NEXT: |-FunctionDecl [[ADDR_100:0x[a-z0-9]*]] <line:53:1, col:30> col:5 used base12 'int ({{.*}})'
// CHECK-NEXT: | |-CompoundStmt [[ADDR_101:0x[a-z0-9]*]] <col:18, col:30>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_102:0x[a-z0-9]*]] <col:20, col:27>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_103:0x[a-z0-9]*]] <col:27> 'int' 8
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_104:0x[a-z0-9]*]] <line:52:1, col:82> Implicit implementation={extension(match_all)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_104:0x[a-z0-9]*]] <line:52:1, col:82> Implicit implementation={extension(match_all)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_105:0x[a-z0-9]*]] <col:29> 'int ({{.*}})' {{.*}}Function [[ADDR_14]] 'picked6' 'int ({{.*}})' non_odr_use_unevaluated
// CHECK-NEXT: |-FunctionDecl [[ADDR_106:0x[a-z0-9]*]] <line:56:1, col:30> col:5 used base13 'int ({{.*}})'
// CHECK-NEXT: | |-CompoundStmt [[ADDR_107:0x[a-z0-9]*]] <col:18, col:30>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_108:0x[a-z0-9]*]] <col:20, col:27>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_109:0x[a-z0-9]*]] <col:27> 'int' 9
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_110:0x[a-z0-9]*]] <line:55:1, col:83> Implicit implementation={extension(match_none)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_110:0x[a-z0-9]*]] <line:55:1, col:83> Implicit implementation={extension(match_none)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_111:0x[a-z0-9]*]] <col:29> 'int ({{.*}})' {{.*}}Function [[ADDR_18]] 'picked7' 'int ({{.*}})' non_odr_use_unevaluated
// CHECK-NEXT: |-FunctionDecl [[ADDR_112:0x[a-z0-9]*]] <line:59:1, col:21> col:5 implicit used overloaded1 'int ({{.*}})'
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_113:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(match_any)}, device={kind(cpu, gpu)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_113:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(match_any)}, device={kind(cpu, gpu)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_114:0x[a-z0-9]*]] <col:1> 'int ({{.*}})' {{.*}}Function [[ADDR_115:0x[a-z0-9]*]] 'overloaded1[implementation={extension(match_any)}, device={kind(cpu, gpu)}]' 'int ({{.*}})'
// CHECK-NEXT: |-FunctionDecl [[ADDR_115]] <col:1, col:35> col:1 overloaded1[implementation={extension(match_any)}, device={kind(cpu, gpu)}] 'int ({{.*}})'
// CHECK-NEXT: | `-CompoundStmt [[ADDR_116:0x[a-z0-9]*]] <col:23, col:35>
@@ -209,7 +209,7 @@ int test(void) {
// CHECK-NEXT: | |-CompoundStmt [[ADDR_120:0x[a-z0-9]*]] <col:23, col:35>
// CHECK-NEXT: | | `-ReturnStmt [[ADDR_121:0x[a-z0-9]*]] <col:25, col:32>
// CHECK-NEXT: | | `-IntegerLiteral [[ADDR_122:0x[a-z0-9]*]] <col:32> 'int' 1
-// CHECK-NEXT: | `-OMPDeclareVariantAttr [[ADDR_123:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(match_none)}, device={kind(fpga, gpu)}
+// CHECK-NEXT: | `-attrDetails: OMPDeclareVariantAttr [[ADDR_123:0x[a-z0-9]*]] <<invalid sloc>> Implicit implementation={extension(match_none)}, device={kind(fpga, gpu)}
// CHECK-NEXT: | `-DeclRefExpr [[ADDR_124:0x[a-z0-9]*]] <line:64:1> 'int ({{.*}})' {{.*}}Function [[ADDR_125:0x[a-z0-9]*]] 'overloaded2[implementation={extension(match_none)}, device={kind(fpga, gpu)}]' 'int ({{.*}})'
// CHECK-NEXT: |-FunctionDecl [[ADDR_125]] <col:1, col:35> col:1 overloaded2[implementation={extension(match_none)}, device={kind(fpga, gpu)}] 'int ({{.*}})'
// CHECK-NEXT: | `-CompoundStmt [[ADDR_126:0x[a-z0-9]*]] <col:23, col:35>
diff --git a/clang/test/AST/ast-dump-openmp-distribute-parallel-for-simd.c b/clang/test/AST/ast-dump-openmp-distribute-parallel-for-simd.c
index 10f27e759b5b1..60038f67432d6 100644
--- a/clang/test/AST/ast-dump-openmp-distribute-parallel-for-simd.c
+++ b/clang/test/AST/ast-dump-openmp-distribute-parallel-for-simd.c
@@ -38,15 +38,15 @@ void test_five(int x, int y, int z) {
// CHECK: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>
// CHECK: |-FunctionDecl {{.*}} <{{.*}}ast-dump-openmp-distribute-parallel-for-simd.c:3:1, line:7: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:7:1>
+// CHECK: | `-CompoundStmt {{.*}} <col:22, line:7:1>
// CHECK-NEXT: | `-OMPDistributeParallelForSimdDirective {{.*}} <line:4:1, col:41>
// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:5:3, line:6:5>
// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
// CHECK-NEXT: | | |-ForStmt {{.*}} <line:5:3, line:6:5>
// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:5:8, col:17>
// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
@@ -56,25 +56,25 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:6:5>
// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute-parallel-for-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute-parallel-for-simd.c:4:1) *const restrict'
+// CHECK: | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK-NEXT: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
// CHECK-NEXT: |-FunctionDecl {{.*}} <line:9:1, line:14:1> line:9:6 test_two 'void (int, int)'
// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:29, line:14:1>
+// CHECK: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:29, line:14:1>
// CHECK-NEXT: | `-OMPDistributeParallelForSimdDirective {{.*}} <line:10:1, col:41>
// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:11:3, line:13:7>
// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
// CHECK-NEXT: | | |-ForStmt {{.*}} <line:11:3, line:13:7>
// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:11:8, col:17>
// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
@@ -85,8 +85,8 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
// 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
-// CHECK-NEXT: | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
@@ -96,20 +96,20 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:13:7>
// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute-parallel-for-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHEC: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHEC: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHEC: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute-parallel-for-simd.c:10:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK-NEXT: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK-NEXT: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
// CHECK-NEXT: |-FunctionDecl {{.*}} <line:16:1, line:21:1> line:16:6 test_three 'void (int, int)'
// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:31, line:21:1>
+// CHECK: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:31, line:21:1>
// CHECK-NEXT: | `-OMPDistributeParallelForSimdDirective {{.*}} <line:17:1, col:53>
// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:42, col:52>
// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:51> 'int'
@@ -120,8 +120,8 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | |-ForStmt {{.*}} <line:18:3, line:20:7>
// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:18:8, col:17>
// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
@@ -132,8 +132,8 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
// 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
-// CHECK-NEXT: | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
@@ -143,20 +143,20 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:20:7>
// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute-parallel-for-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute-parallel-for-simd.c:17:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK-NEXT: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK-NEXT: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
// CHECK-NEXT: |-FunctionDecl {{.*}} <line:23:1, line:28:1> line:23:6 test_four 'void (int, int)'
// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:30, line:28:1>
+// CHECK: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:30, line:28:1>
// CHECK-NEXT: | `-OMPDistributeParallelForSimdDirective {{.*}} <line:24:1, col:53>
// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:42, col:52>
// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:51> 'int'
@@ -167,8 +167,8 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | |-ForStmt {{.*}} <line:25:3, line:27:7>
// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:25:8, col:17>
// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
@@ -179,8 +179,8 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:26:10, col:19>
// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
@@ -190,21 +190,21 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:27:7>
// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute-parallel-for-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute-parallel-for-simd.c:24:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK-NEXT: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK-NEXT: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
// CHECK-NEXT: `-FunctionDecl {{.*}} <line:30:1, line:36:1> line:30:6 test_five 'void (int, int, int)'
// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
-// CHECK-NEXT: `-CompoundStmt {{.*}} <col:37, line:36:1>
+// CHECK: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
+// CHECK: `-CompoundStmt {{.*}} <col:37, line:36:1>
// CHECK-NEXT: `-OMPDistributeParallelForSimdDirective {{.*}} <line:31:1, col:53>
// CHECK-NEXT: |-OMPCollapseClause {{.*}} <col:42, col:52>
// CHECK-NEXT: | `-ConstantExpr {{.*}} <col:51> 'int'
@@ -215,8 +215,8 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | |-ForStmt {{.*}} <line:32:3, line:35:9>
// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:32:8, col:17>
// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
+// CHECK-NEXT: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | |-<<<NULL>>>
// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
@@ -227,8 +227,8 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | `-ForStmt {{.*}} <line:33:5, line:35:9>
// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:33:10, col:19>
// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
+// CHECK-NEXT: | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | |-<<<NULL>>>
// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
@@ -239,8 +239,8 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | `-ForStmt {{.*}} <line:34:7, line:35:9>
// 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
-// CHECK-NEXT: | | |-<<<NULL>>>
+// CHECK-NEXT: | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | |-<<<NULL>>>
// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
@@ -250,16 +250,16 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
// CHECK-NEXT: | | `-NullStmt {{.*}} <line:35:9>
// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute-parallel-for-simd.c:31:1) *const restrict'
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute-parallel-for-simd.c:31:1) *const restrict'
+// CHECK: | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK-NEXT: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK-NEXT: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK-NEXT: | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
// CHECK-NEXT: `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
diff --git a/clang/test/AST/ast-dump-openmp-distribute-parallel-for.c b/clang/test/AST/ast-dump-openmp-distribute-parallel-for.c
index 419ba57191039..44c3bed38d560 100644
--- a/clang/test/AST/ast-dump-openmp-distribute-parallel-for.c
+++ b/clang/test/AST/ast-dump-openmp-distribute-parallel-for.c
@@ -38,228 +38,228 @@ void test_five(int x, int y, int z) {
// CHECK: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>
// CHECK: |-FunctionDecl {{.*}} <{{.*}}ast-dump-openmp-distribute-parallel-for.c:3:1, line:7: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:7:1>
+// CHECK: | `-CompoundStmt {{.*}} <col:22, line:7:1>
// CHECK-NEXT: | `-OMPDistributeParallelForDirective {{.*}} <line:4:1, col:36>
// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:5:3, line:6:5>
// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
// CHECK-NEXT: | | |-ForStmt {{.*}} <line:5:3, line:6:5>
// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:5:8, col:17>
// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute-parallel-for.c:4:1) *const restrict'
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:9:1, line:14:1> line:9:6 test_two 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:29, line:14:1>
-// CHECK-NEXT: | `-OMPDistributeParallelForDirective {{.*}} <line:10:1, col:36>
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | |-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
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute-parallel-for.c:10:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:16:1, line:21:1> line:16:6 test_three 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:31, line:21:1>
-// CHECK-NEXT: | `-OMPDistributeParallelForDirective {{.*}} <line:17:1, col:48>
-// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:37, col:47>
-// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:46> 'int'
-// CHECK-NEXT: | | |-value: Int 1
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:46> 'int' 1
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | |-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
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute-parallel-for.c:17:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:23:1, line:28:1> line:23:6 test_four 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:30, line:28:1>
-// CHECK-NEXT: | `-OMPDistributeParallelForDirective {{.*}} <line:24:1, col:48>
-// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:37, col:47>
-// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:46> 'int'
-// CHECK-NEXT: | | |-value: Int 2
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:46> 'int' 2
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute-parallel-for.c:24:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: `-FunctionDecl {{.*}} <line:30:1, line:36:1> line:30:6 test_five 'void (int, int, int)'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
-// CHECK-NEXT: `-CompoundStmt {{.*}} <col:37, line:36:1>
-// CHECK-NEXT: `-OMPDistributeParallelForDirective {{.*}} <line:31:1, col:48>
-// CHECK-NEXT: |-OMPCollapseClause {{.*}} <col:37, col:47>
-// CHECK-NEXT: | `-ConstantExpr {{.*}} <col:46> 'int'
-// CHECK-NEXT: | |-value: Int 2
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:46> 'int' 2
-// CHECK-NEXT: `-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-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
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute-parallel-for.c:31:1) *const restrict'
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute-parallel-for.c:4:1) *const restrict'
+// CHECK: | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:9:1, line:14:1> line:9:6 test_two 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:29, line:14:1>
+// CHECK: | `-OMPDistributeParallelForDirective {{.*}} <line:10:1, col:36>
+// CHECK: | `-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute-parallel-for.c:10:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:16:1, line:21:1> line:16:6 test_three 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:31, line:21:1>
+// CHECK: | `-OMPDistributeParallelForDirective {{.*}} <line:17:1, col:48>
+// CHECK: | |-OMPCollapseClause {{.*}} <col:37, col:47>
+// CHECK: | | `-ConstantExpr {{.*}} <col:46> 'int'
+// CHECK: | | |-value: Int 1
+// CHECK: | | `-IntegerLiteral {{.*}} <col:46> 'int' 1
+// CHECK: | `-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute-parallel-for.c:17:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:23:1, line:28:1> line:23:6 test_four 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:30, line:28:1>
+// CHECK: | `-OMPDistributeParallelForDirective {{.*}} <line:24:1, col:48>
+// CHECK: | |-OMPCollapseClause {{.*}} <col:37, col:47>
+// CHECK: | | `-ConstantExpr {{.*}} <col:46> 'int'
+// CHECK: | | |-value: Int 2
+// CHECK: | | `-IntegerLiteral {{.*}} <col:46> 'int' 2
+// CHECK: | `-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute-parallel-for.c:24:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: `-FunctionDecl {{.*}} <line:30:1, line:36:1> line:30:6 test_five 'void (int, int, int)'
+// CHECK: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
+// CHECK: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
+// CHECK: `-CompoundStmt {{.*}} <col:37, line:36:1>
+// CHECK: `-OMPDistributeParallelForDirective {{.*}} <line:31:1, col:48>
+// CHECK: |-OMPCollapseClause {{.*}} <col:37, col:47>
+// CHECK: | `-ConstantExpr {{.*}} <col:46> 'int'
+// CHECK: | |-value: Int 2
+// CHECK: | `-IntegerLiteral {{.*}} <col:46> 'int' 2
+// CHECK: `-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute-parallel-for.c:31:1) *const restrict'
+// CHECK: | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
diff --git a/clang/test/AST/ast-dump-openmp-distribute-simd.c b/clang/test/AST/ast-dump-openmp-distribute-simd.c
index b5ad177249efb..da07db4398edc 100644
--- a/clang/test/AST/ast-dump-openmp-distribute-simd.c
+++ b/clang/test/AST/ast-dump-openmp-distribute-simd.c
@@ -37,209 +37,209 @@ void test_five(int x, int y, int z) {
// CHECK: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>
// CHECK: |-FunctionDecl {{.*}} <{{.*}}ast-dump-openmp-distribute-simd.c:3:1, line:7: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:7:1>
-// CHECK-NEXT: | `-OMPDistributeSimdDirective {{.*}} <line:4:1, col:28>
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:9:1, line:14:1> line:9:6 test_two 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:29, line:14:1>
-// CHECK-NEXT: | `-OMPDistributeSimdDirective {{.*}} <line:10:1, col:28>
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | |-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
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:16:1, line:21:1> line:16:6 test_three 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:31, line:21:1>
-// CHECK-NEXT: | `-OMPDistributeSimdDirective {{.*}} <line:17:1, col:40>
-// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:29, col:39>
-// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:38> 'int'
-// CHECK-NEXT: | | |-value: Int 1
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:38> 'int' 1
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | |-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
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:23:1, line:28:1> line:23:6 test_four 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:30, line:28:1>
-// CHECK-NEXT: | `-OMPDistributeSimdDirective {{.*}} <line:24:1, col:40>
-// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:29, col:39>
-// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:38> 'int'
-// CHECK-NEXT: | | |-value: Int 2
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:38> 'int' 2
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: `-FunctionDecl {{.*}} <line:30:1, line:36:1> line:30:6 test_five 'void (int, int, int)'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
-// CHECK-NEXT: `-CompoundStmt {{.*}} <col:37, line:36:1>
-// CHECK-NEXT: `-OMPDistributeSimdDirective {{.*}} <line:31:1, col:40>
-// CHECK-NEXT: |-OMPCollapseClause {{.*}} <col:29, col:39>
-// CHECK-NEXT: | `-ConstantExpr {{.*}} <col:38> 'int'
-// CHECK-NEXT: | |-value: Int 2
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:38> 'int' 2
-// CHECK-NEXT: `-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-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
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute-simd.c:31:1) *const restrict'
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:22, line:7:1>
+// CHECK: | `-OMPDistributeSimdDirective {{.*}} <line:4:1, col:28>
+// CHECK: | `-CapturedStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute-simd.c:4:1) *const restrict'
+// CHECK: | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:9:1, line:14:1> line:9:6 test_two 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:29, line:14:1>
+// CHECK: | `-OMPDistributeSimdDirective {{.*}} <line:10:1, col:28>
+// CHECK: | `-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute-simd.c:10:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:16:1, line:21:1> line:16:6 test_three 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:31, line:21:1>
+// CHECK: | `-OMPDistributeSimdDirective {{.*}} <line:17:1, col:40>
+// CHECK: | |-OMPCollapseClause {{.*}} <col:29, col:39>
+// CHECK: | | `-ConstantExpr {{.*}} <col:38> 'int'
+// CHECK: | | |-value: Int 1
+// CHECK: | | `-IntegerLiteral {{.*}} <col:38> 'int' 1
+// CHECK: | `-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute-simd.c:17:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:23:1, line:28:1> line:23:6 test_four 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:30, line:28:1>
+// CHECK: | `-OMPDistributeSimdDirective {{.*}} <line:24:1, col:40>
+// CHECK: | |-OMPCollapseClause {{.*}} <col:29, col:39>
+// CHECK: | | `-ConstantExpr {{.*}} <col:38> 'int'
+// CHECK: | | |-value: Int 2
+// CHECK: | | `-IntegerLiteral {{.*}} <col:38> 'int' 2
+// CHECK: | `-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute-simd.c:24:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: `-FunctionDecl {{.*}} <line:30:1, line:36:1> line:30:6 test_five 'void (int, int, int)'
+// CHECK: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
+// CHECK: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
+// CHECK: `-CompoundStmt {{.*}} <col:37, line:36:1>
+// CHECK: `-OMPDistributeSimdDirective {{.*}} <line:31:1, col:40>
+// CHECK: |-OMPCollapseClause {{.*}} <col:29, col:39>
+// CHECK: | `-ConstantExpr {{.*}} <col:38> 'int'
+// CHECK: | |-value: Int 2
+// CHECK: | `-IntegerLiteral {{.*}} <col:38> 'int' 2
+// CHECK: `-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute-simd.c:31:1) *const restrict'
+// CHECK: | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
diff --git a/clang/test/AST/ast-dump-openmp-distribute.c b/clang/test/AST/ast-dump-openmp-distribute.c
index 1867308524d5c..a491d71901c17 100644
--- a/clang/test/AST/ast-dump-openmp-distribute.c
+++ b/clang/test/AST/ast-dump-openmp-distribute.c
@@ -38,15 +38,15 @@ void test_five(int x, int y, int z) {
// CHECK: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>
// CHECK: |-FunctionDecl {{.*}} <{{.*}}ast-dump-openmp-distribute.c:3:1, line:7: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:7:1>
+// CHECK: | `-CompoundStmt {{.*}} <col:22, line:7:1>
// CHECK-NEXT: | `-OMPDistributeDirective {{.*}} <line:4:1, col:23>
// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:5:3, line:6:5>
// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc>
// CHECK-NEXT: | | |-ForStmt {{.*}} <line:5:3, line:6:5>
// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:5:8, col:17>
// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
@@ -56,21 +56,21 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:6:5>
// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute.c:4:1) *const restrict'
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK-NEXT: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
// CHECK-NEXT: |-FunctionDecl {{.*}} <line:9:1, line:14:1> line:9:6 test_two 'void (int, int)'
// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:29, line:14:1>
+// CHECK: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:29, line:14:1>
// CHECK-NEXT: | `-OMPDistributeDirective {{.*}} <line:10:1, col:23>
// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:11:3, line:13:7>
// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc>
// CHECK-NEXT: | | |-ForStmt {{.*}} <line:11:3, line:13:7>
// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:11:8, col:17>
// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
@@ -81,8 +81,8 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
// 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
-// CHECK-NEXT: | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
@@ -92,16 +92,16 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:13:7>
// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute.c:10:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK-NEXT: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK-NEXT: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
// CHECK-NEXT: |-FunctionDecl {{.*}} <line:16:1, line:21:1> line:16:6 test_three 'void (int, int)'
// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:31, line:21:1>
+// CHECK: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:31, line:21:1>
// CHECK-NEXT: | `-OMPDistributeDirective {{.*}} <line:17:1, col:35>
// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:24, col:34>
// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:33> 'int'
@@ -112,8 +112,8 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | |-ForStmt {{.*}} <line:18:3, line:20:7>
// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:18:8, col:17>
// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
@@ -124,8 +124,8 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
// 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
-// CHECK-NEXT: | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
@@ -135,16 +135,16 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:20:7>
// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute.c:17:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK-NEXT: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK-NEXT: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
// CHECK-NEXT: |-FunctionDecl {{.*}} <line:23:1, line:28:1> line:23:6 test_four 'void (int, int)'
// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:30, line:28:1>
+// CHECK: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:30, line:28:1>
// CHECK-NEXT: | `-OMPDistributeDirective {{.*}} <line:24:1, col:35>
// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:24, col:34>
// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:33> 'int'
@@ -155,8 +155,8 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | |-ForStmt {{.*}} <line:25:3, line:27:7>
// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:25:8, col:17>
// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
@@ -167,8 +167,8 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:26:10, col:19>
// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
@@ -178,17 +178,17 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:27:7>
// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute.c:24:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK-NEXT: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK-NEXT: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
// CHECK-NEXT: `-FunctionDecl {{.*}} <line:30:1, line:36:1> line:30:6 test_five 'void (int, int, int)'
// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
-// CHECK-NEXT: `-CompoundStmt {{.*}} <col:37, line:36:1>
+// CHECK: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
+// CHECK: `-CompoundStmt {{.*}} <col:37, line:36:1>
// CHECK-NEXT: `-OMPDistributeDirective {{.*}} <line:31:1, col:35>
// CHECK-NEXT: |-OMPCollapseClause {{.*}} <col:24, col:34>
// CHECK-NEXT: | `-ConstantExpr {{.*}} <col:33> 'int'
@@ -199,8 +199,8 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | |-ForStmt {{.*}} <line:32:3, line:35:9>
// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:32:8, col:17>
// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
+// CHECK-NEXT: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | |-<<<NULL>>>
// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
@@ -211,8 +211,8 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | `-ForStmt {{.*}} <line:33:5, line:35:9>
// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:33:10, col:19>
// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
+// CHECK-NEXT: | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | |-<<<NULL>>>
// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
@@ -223,8 +223,8 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | `-ForStmt {{.*}} <line:34:7, line:35:9>
// 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
-// CHECK-NEXT: | | |-<<<NULL>>>
+// CHECK-NEXT: | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | |-<<<NULL>>>
// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
@@ -234,12 +234,12 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
// CHECK-NEXT: | | `-NullStmt {{.*}} <line:35:9>
// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute.c:31:1) *const restrict'
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK-NEXT: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK-NEXT: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK-NEXT: | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
// CHECK-NEXT: `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
diff --git a/clang/test/AST/ast-dump-openmp-for-simd.c b/clang/test/AST/ast-dump-openmp-for-simd.c
index 06ae226ccb17d..00a6a7cee0265 100644
--- a/clang/test/AST/ast-dump-openmp-for-simd.c
+++ b/clang/test/AST/ast-dump-openmp-for-simd.c
@@ -38,15 +38,15 @@ void test_five(int x, int y, int z) {
// CHECK: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>
// CHECK: |-FunctionDecl {{.*}} <{{.*}}ast-dump-openmp-for-simd.c:3:1, line:7: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:7:1>
+// CHECK: | `-CompoundStmt {{.*}} <col:22, line:7:1>
// CHECK-NEXT: | `-OMPForSimdDirective {{.*}} <line:4:1, col:21>
// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:5:3, line:6:5>
// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
// CHECK-NEXT: | | |-ForStmt {{.*}} <line:5:3, line:6:5>
// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:5:8, col:17>
// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
@@ -56,21 +56,21 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:6:5>
// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-for-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK-NEXT: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
// CHECK-NEXT: |-FunctionDecl {{.*}} <line:9:1, line:14:1> line:9:6 test_two 'void (int, int)'
// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:29, line:14:1>
+// CHECK: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:29, line:14:1>
// CHECK-NEXT: | `-OMPForSimdDirective {{.*}} <line:10:1, col:21>
// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:11:3, line:13:7>
// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
// CHECK-NEXT: | | |-ForStmt {{.*}} <line:11:3, line:13:7>
// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:11:8, col:17>
// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
@@ -81,8 +81,8 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
// 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
-// CHECK-NEXT: | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
@@ -92,16 +92,16 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:13:7>
// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-for-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK-NEXT: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK-NEXT: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
// CHECK-NEXT: |-FunctionDecl {{.*}} <line:16:1, line:21:1> line:16:6 test_three 'void (int, int)'
// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:31, line:21:1>
+// CHECK: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:31, line:21:1>
// CHECK-NEXT: | `-OMPForSimdDirective {{.*}} <line:17:1, col:33>
// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:22, col:32>
// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:31> 'int'
@@ -112,8 +112,8 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | |-ForStmt {{.*}} <line:18:3, line:20:7>
// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:18:8, col:17>
// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
@@ -124,8 +124,8 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
// 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
-// CHECK-NEXT: | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
@@ -135,16 +135,16 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:20:7>
// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-for-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK-NEXT: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK-NEXT: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
// CHECK-NEXT: |-FunctionDecl {{.*}} <line:23:1, line:28:1> line:23:6 test_four 'void (int, int)'
// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:30, line:28:1>
+// CHECK: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:30, line:28:1>
// CHECK-NEXT: | `-OMPForSimdDirective {{.*}} <line:24:1, col:33>
// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:22, col:32>
// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:31> 'int'
@@ -155,8 +155,8 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | |-ForStmt {{.*}} <line:25:3, line:27:7>
// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:25:8, col:17>
// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
@@ -167,8 +167,8 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:26:10, col:19>
// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
@@ -178,17 +178,17 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:27:7>
// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-for-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK-NEXT: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK-NEXT: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
// CHECK-NEXT: `-FunctionDecl {{.*}} <line:30:1, line:36:1> line:30:6 test_five 'void (int, int, int)'
// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
-// CHECK-NEXT: `-CompoundStmt {{.*}} <col:37, line:36:1>
+// CHECK: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
+// CHECK: `-CompoundStmt {{.*}} <col:37, line:36:1>
// CHECK-NEXT: `-OMPForSimdDirective {{.*}} <line:31:1, col:33>
// CHECK-NEXT: |-OMPCollapseClause {{.*}} <col:22, col:32>
// CHECK-NEXT: | `-ConstantExpr {{.*}} <col:31> 'int'
@@ -199,8 +199,8 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | |-ForStmt {{.*}} <line:32:3, line:35:9>
// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:32:8, col:17>
// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
+// CHECK-NEXT: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | |-<<<NULL>>>
// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
@@ -211,8 +211,8 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | `-ForStmt {{.*}} <line:33:5, line:35:9>
// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:33:10, col:19>
// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
+// CHECK-NEXT: | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | |-<<<NULL>>>
// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
@@ -223,8 +223,8 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | `-ForStmt {{.*}} <line:34:7, line:35:9>
// 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
-// CHECK-NEXT: | | |-<<<NULL>>>
+// CHECK-NEXT: | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | |-<<<NULL>>>
// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
@@ -234,12 +234,12 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
// CHECK-NEXT: | | `-NullStmt {{.*}} <line:35:9>
// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-for-simd.c:31:1) *const restrict'
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK-NEXT: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK-NEXT: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK-NEXT: | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
// CHECK-NEXT: `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
diff --git a/clang/test/AST/ast-dump-openmp-for.c b/clang/test/AST/ast-dump-openmp-for.c
index 65bd72df63488..f3006b06411e2 100644
--- a/clang/test/AST/ast-dump-openmp-for.c
+++ b/clang/test/AST/ast-dump-openmp-for.c
@@ -38,15 +38,15 @@ void test_five(int x, int y, int z) {
// CHECK: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>
// CHECK: |-FunctionDecl {{.*}} <{{.*}}ast-dump-openmp-for.c:3:1, line:7: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:7:1>
+// CHECK: | `-CompoundStmt {{.*}} <col:22, line:7:1>
// CHECK-NEXT: | `-OMPForDirective {{.*}} <line:4:1, col:16>
// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:5:3, line:6:5>
// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc>
// CHECK-NEXT: | | |-ForStmt {{.*}} <line:5:3, line:6:5>
// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:5:8, col:17>
// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
@@ -56,21 +56,21 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:6:5>
// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-for.c:4:1) *const restrict'
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK-NEXT: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
// CHECK-NEXT: |-FunctionDecl {{.*}} <line:9:1, line:14:1> line:9:6 test_two 'void (int, int)'
// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:29, line:14:1>
+// CHECK: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:29, line:14:1>
// CHECK-NEXT: | `-OMPForDirective {{.*}} <line:10:1, col:16>
// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:11:3, line:13:7>
// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc>
// CHECK-NEXT: | | |-ForStmt {{.*}} <line:11:3, line:13:7>
// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:11:8, col:17>
// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
@@ -81,8 +81,8 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
// 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
-// CHECK-NEXT: | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
@@ -92,154 +92,154 @@ void test_five(int x, int y, int z) {
// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:13:7>
// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-for.c:10:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:16:1, line:21:1> line:16:6 test_three 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:31, line:21:1>
-// CHECK-NEXT: | `-OMPForDirective {{.*}} <line:17:1, col:28>
-// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:17, col:27>
-// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:26> 'int'
-// CHECK-NEXT: | | |-value: Int 1
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc>
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | |-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
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-for.c:17:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:23:1, line:28:1> line:23:6 test_four 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:30, line:28:1>
-// CHECK-NEXT: | `-OMPForDirective {{.*}} <line:24:1, col:28>
-// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:17, col:27>
-// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:26> 'int'
-// CHECK-NEXT: | | |-value: Int 2
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:26> 'int' 2
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc>
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-for.c:24:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: `-FunctionDecl {{.*}} <line:30:1, line:36:1> line:30:6 test_five 'void (int, int, int)'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
-// CHECK-NEXT: `-CompoundStmt {{.*}} <col:37, line:36:1>
-// CHECK-NEXT: `-OMPForDirective {{.*}} <line:31:1, col:28>
-// CHECK-NEXT: |-OMPCollapseClause {{.*}} <col:17, col:27>
-// CHECK-NEXT: | `-ConstantExpr {{.*}} <col:26> 'int'
-// CHECK-NEXT: | |-value: Int 2
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:26> 'int' 2
-// CHECK-NEXT: `-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc>
-// CHECK-NEXT: | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-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
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-for.c:31:1) *const restrict'
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
+// CHECK: | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK-NEXT: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK-NEXT: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:16:1, line:21:1> line:16:6 test_three 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:31, line:21:1>
+// CHECK: | `-OMPForDirective {{.*}} <line:17:1, col:28>
+// CHECK: | |-OMPCollapseClause {{.*}} <col:17, col:27>
+// CHECK: | | `-ConstantExpr {{.*}} <col:26> 'int'
+// CHECK: | | |-value: Int 1
+// CHECK: | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
+// CHECK: | `-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc>
+// CHECK: | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-for.c:17:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:23:1, line:28:1> line:23:6 test_four 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:30, line:28:1>
+// CHECK: | `-OMPForDirective {{.*}} <line:24:1, col:28>
+// CHECK: | |-OMPCollapseClause {{.*}} <col:17, col:27>
+// CHECK: | | `-ConstantExpr {{.*}} <col:26> 'int'
+// CHECK: | | |-value: Int 2
+// CHECK: | | `-IntegerLiteral {{.*}} <col:26> 'int' 2
+// CHECK: | `-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc>
+// CHECK: | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-for.c:24:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: `-FunctionDecl {{.*}} <line:30:1, line:36:1> line:30:6 test_five 'void (int, int, int)'
+// CHECK: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
+// CHECK: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
+// CHECK: `-CompoundStmt {{.*}} <col:37, line:36:1>
+// CHECK: `-OMPForDirective {{.*}} <line:31:1, col:28>
+// CHECK: |-OMPCollapseClause {{.*}} <col:17, col:27>
+// CHECK: | `-ConstantExpr {{.*}} <col:26> 'int'
+// CHECK: | |-value: Int 2
+// CHECK: | `-IntegerLiteral {{.*}} <col:26> 'int' 2
+// CHECK: `-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc>
+// CHECK: | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-for.c:31:1) *const restrict'
+// CHECK: | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
diff --git a/clang/test/AST/ast-dump-openmp-ordered.c b/clang/test/AST/ast-dump-openmp-ordered.c
index 0bbbfdc2f85b0..25bbc4d005a91 100644
--- a/clang/test/AST/ast-dump-openmp-ordered.c
+++ b/clang/test/AST/ast-dump-openmp-ordered.c
@@ -26,9 +26,9 @@ void test_three(int x) {
// CHECK-NEXT: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc>
// CHECK-NEXT: | |-NullStmt {{.*}} <col:3>
// CHECK-NEXT: | `-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-ordered.c:4:1) *const restrict'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:8:1, line:12:1> line:8:6 test_two 'void (int)'
+// CHECK: |-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'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:22, line:12:1>
+// CHECK: | `-CompoundStmt {{.*}} <col:22, line:12:1>
// CHECK-NEXT: | `-OMPForDirective {{.*}} <line:9:1, col:24>
// CHECK-NEXT: | |-OMPOrderedClause {{.*}} <col:17, col:24>
// CHECK-NEXT: | | `-<<<NULL>>>
@@ -37,46 +37,46 @@ void test_three(int x) {
// CHECK-NEXT: | | |-ForStmt {{.*}} <line:10:3, line:11:5>
// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:10:8, col:17>
// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-ImplicitParamDecl {{.*}} <line:9:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-ordered.c:9:1) *const restrict'
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:10:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: `-FunctionDecl {{.*}} <line:14:1, line:19:1> line:14:6 test_three 'void (int)'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
-// CHECK-NEXT: `-CompoundStmt {{.*}} <col:24, line:19:1>
-// CHECK-NEXT: `-OMPForDirective {{.*}} <line:15:1, col:27>
-// CHECK-NEXT: |-OMPOrderedClause {{.*}} <col:17, col:26>
-// CHECK-NEXT: | `-ConstantExpr {{.*}} <col:25> 'int'
-// CHECK-NEXT: | |-value: Int 1
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:25> 'int' 1
-// CHECK-NEXT: `-CapturedStmt {{.*}} <line:16:3, line:18:3>
-// CHECK-NEXT: |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc>
-// CHECK-NEXT: | |-ForStmt {{.*}} <line:16:3, line:18:3>
-// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:16:8, col:17>
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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:1, col:35> openmp_standalone_directive
-// CHECK-NEXT: | | `-OMPDependClause {{.*}} <col:21, <invalid sloc>>
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:15:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-ordered.c:15:1) *const restrict'
-// CHECK-NEXT: | `-VarDecl {{.*}} <line:16:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:11:5>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:9:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-ordered.c:9:1) *const restrict'
+// CHECK: | | `-VarDecl {{.*}} <line:10:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: `-FunctionDecl {{.*}} <line:14:1, line:19:1> line:14:6 test_three 'void (int)'
+// CHECK: |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
+// CHECK: `-CompoundStmt {{.*}} <col:24, line:19:1>
+// CHECK: `-OMPForDirective {{.*}} <line:15:1, col:27>
+// CHECK: |-OMPOrderedClause {{.*}} <col:17, col:26>
+// CHECK: | `-ConstantExpr {{.*}} <col:25> 'int'
+// CHECK: | |-value: Int 1
+// CHECK: | `-IntegerLiteral {{.*}} <col:25> 'int' 1
+// CHECK: `-CapturedStmt {{.*}} <line:16:3, line:18:3>
+// CHECK: |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc>
+// CHECK: | |-ForStmt {{.*}} <line:16:3, line:18:3>
+// CHECK: | | |-DeclStmt {{.*}} <line:16:8, col:17>
+// CHECK: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-CompoundStmt {{.*}} <col:31, line:18:3>
+// CHECK: | | `-OMPOrderedDirective {{.*}} <line:17:1, col:35> openmp_standalone_directive
+// CHECK: | | `-OMPDependClause {{.*}} <col:21, <invalid sloc>>
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:15:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-ordered.c:15:1) *const restrict'
+// CHECK: | `-VarDecl {{.*}} <line:16:8, col:16> col:12 used i 'int' cinit
+// CHECK: | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
diff --git a/clang/test/AST/ast-dump-openmp-parallel-for-simd.c b/clang/test/AST/ast-dump-openmp-parallel-for-simd.c
index 6ef09fe88ab3d..632183506f51e 100644
--- a/clang/test/AST/ast-dump-openmp-parallel-for-simd.c
+++ b/clang/test/AST/ast-dump-openmp-parallel-for-simd.c
@@ -37,219 +37,219 @@ void test_five(int x, int y, int z) {
// CHECK: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>
// CHECK: |-FunctionDecl {{.*}} <{{.*}}ast-dump-openmp-parallel-for-simd.c:3:1, line:7: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:7:1>
-// CHECK-NEXT: | `-OMPParallelForSimdDirective {{.*}} <line:4:1, col:30>
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-parallel-for-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:9:1, line:14:1> line:9:6 test_two 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:29, line:14:1>
-// CHECK-NEXT: | `-OMPParallelForSimdDirective {{.*}} <line:10:1, col:30>
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | |-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
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-parallel-for-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:16:1, line:21:1> line:16:6 test_three 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:31, line:21:1>
-// CHECK-NEXT: | `-OMPParallelForSimdDirective {{.*}} <line:17:1, col:42>
-// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:31, col:41>
-// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:40> 'int'
-// CHECK-NEXT: | | |-value: Int 1
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:40> 'int' 1
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | |-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
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-parallel-for-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:23:1, line:28:1> line:23:6 test_four 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:30, line:28:1>
-// CHECK-NEXT: | `-OMPParallelForSimdDirective {{.*}} <line:24:1, col:42>
-// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:31, col:41>
-// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:40> 'int'
-// CHECK-NEXT: | | |-value: Int 2
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:40> 'int' 2
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-parallel-for-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: `-FunctionDecl {{.*}} <line:30:1, line:36:1> line:30:6 test_five 'void (int, int, int)'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
-// CHECK-NEXT: `-CompoundStmt {{.*}} <col:37, line:36:1>
-// CHECK-NEXT: `-OMPParallelForSimdDirective {{.*}} <line:31:1, col:42>
-// CHECK-NEXT: |-OMPCollapseClause {{.*}} <col:31, col:41>
-// CHECK-NEXT: | `-ConstantExpr {{.*}} <col:40> 'int'
-// CHECK-NEXT: | |-value: Int 2
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:40> 'int' 2
-// CHECK-NEXT: `-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-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
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-parallel-for-simd.c:31:1) *const restrict'
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:22, line:7:1>
+// CHECK: | `-OMPParallelForSimdDirective {{.*}} <line:4:1, col:30>
+// CHECK: | `-CapturedStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-parallel-for-simd.c:4:1) *const restrict'
+// CHECK: | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:9:1, line:14:1> line:9:6 test_two 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:29, line:14:1>
+// CHECK: | `-OMPParallelForSimdDirective {{.*}} <line:10:1, col:30>
+// CHECK: | `-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-parallel-for-simd.c:10:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:16:1, line:21:1> line:16:6 test_three 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:31, line:21:1>
+// CHECK: | `-OMPParallelForSimdDirective {{.*}} <line:17:1, col:42>
+// CHECK: | |-OMPCollapseClause {{.*}} <col:31, col:41>
+// CHECK: | | `-ConstantExpr {{.*}} <col:40> 'int'
+// CHECK: | | |-value: Int 1
+// CHECK: | | `-IntegerLiteral {{.*}} <col:40> 'int' 1
+// CHECK: | `-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-parallel-for-simd.c:17:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:23:1, line:28:1> line:23:6 test_four 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:30, line:28:1>
+// CHECK: | `-OMPParallelForSimdDirective {{.*}} <line:24:1, col:42>
+// CHECK: | |-OMPCollapseClause {{.*}} <col:31, col:41>
+// CHECK: | | `-ConstantExpr {{.*}} <col:40> 'int'
+// CHECK: | | |-value: Int 2
+// CHECK: | | `-IntegerLiteral {{.*}} <col:40> 'int' 2
+// CHECK: | `-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-parallel-for-simd.c:24:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: `-FunctionDecl {{.*}} <line:30:1, line:36:1> line:30:6 test_five 'void (int, int, int)'
+// CHECK: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
+// CHECK: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
+// CHECK: `-CompoundStmt {{.*}} <col:37, line:36:1>
+// CHECK: `-OMPParallelForSimdDirective {{.*}} <line:31:1, col:42>
+// CHECK: |-OMPCollapseClause {{.*}} <col:31, col:41>
+// CHECK: | `-ConstantExpr {{.*}} <col:40> 'int'
+// CHECK: | |-value: Int 2
+// CHECK: | `-IntegerLiteral {{.*}} <col:40> 'int' 2
+// CHECK: `-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-parallel-for-simd.c:31:1) *const restrict'
+// CHECK: | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
diff --git a/clang/test/AST/ast-dump-openmp-parallel-for.c b/clang/test/AST/ast-dump-openmp-parallel-for.c
index 647b4480de539..bea4835b16221 100644
--- a/clang/test/AST/ast-dump-openmp-parallel-for.c
+++ b/clang/test/AST/ast-dump-openmp-parallel-for.c
@@ -37,219 +37,219 @@ void test_five(int x, int y, int z) {
// CHECK: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>
// CHECK: |-FunctionDecl {{.*}} <{{.*}}ast-dump-openmp-parallel-for.c:3:1, line:7: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:7:1>
-// CHECK-NEXT: | `-OMPParallelForDirective {{.*}} <line:4:1, col:25>
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-parallel-for.c:4:1) *const restrict'
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:9:1, line:14:1> line:9:6 test_two 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:29, line:14:1>
-// CHECK-NEXT: | `-OMPParallelForDirective {{.*}} <line:10:1, col:25>
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | |-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
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-parallel-for.c:10:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:16:1, line:21:1> line:16:6 test_three 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:31, line:21:1>
-// CHECK-NEXT: | `-OMPParallelForDirective {{.*}} <line:17:1, col:37>
-// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:26, col:36>
-// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:35> 'int'
-// CHECK-NEXT: | | |-value: Int 1
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:35> 'int' 1
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | |-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
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-parallel-for.c:17:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:23:1, line:28:1> line:23:6 test_four 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:30, line:28:1>
-// CHECK-NEXT: | `-OMPParallelForDirective {{.*}} <line:24:1, col:37>
-// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:26, col:36>
-// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:35> 'int'
-// CHECK-NEXT: | | |-value: Int 2
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:35> 'int' 2
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-parallel-for.c:24:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: `-FunctionDecl {{.*}} <line:30:1, line:36:1> line:30:6 test_five 'void (int, int, int)'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
-// CHECK-NEXT: `-CompoundStmt {{.*}} <col:37, line:36:1>
-// CHECK-NEXT: `-OMPParallelForDirective {{.*}} <line:31:1, col:37>
-// CHECK-NEXT: |-OMPCollapseClause {{.*}} <col:26, col:36>
-// CHECK-NEXT: | `-ConstantExpr {{.*}} <col:35> 'int'
-// CHECK-NEXT: | |-value: Int 2
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:35> 'int' 2
-// CHECK-NEXT: `-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-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
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-parallel-for.c:31:1) *const restrict'
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:22, line:7:1>
+// CHECK: | `-OMPParallelForDirective {{.*}} <line:4:1, col:25>
+// CHECK: | `-CapturedStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-parallel-for.c:4:1) *const restrict'
+// CHECK: | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:9:1, line:14:1> line:9:6 test_two 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:29, line:14:1>
+// CHECK: | `-OMPParallelForDirective {{.*}} <line:10:1, col:25>
+// CHECK: | `-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-parallel-for.c:10:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:16:1, line:21:1> line:16:6 test_three 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:31, line:21:1>
+// CHECK: | `-OMPParallelForDirective {{.*}} <line:17:1, col:37>
+// CHECK: | |-OMPCollapseClause {{.*}} <col:26, col:36>
+// CHECK: | | `-ConstantExpr {{.*}} <col:35> 'int'
+// CHECK: | | |-value: Int 1
+// CHECK: | | `-IntegerLiteral {{.*}} <col:35> 'int' 1
+// CHECK: | `-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-parallel-for.c:17:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:23:1, line:28:1> line:23:6 test_four 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:30, line:28:1>
+// CHECK: | `-OMPParallelForDirective {{.*}} <line:24:1, col:37>
+// CHECK: | |-OMPCollapseClause {{.*}} <col:26, col:36>
+// CHECK: | | `-ConstantExpr {{.*}} <col:35> 'int'
+// CHECK: | | |-value: Int 2
+// CHECK: | | `-IntegerLiteral {{.*}} <col:35> 'int' 2
+// CHECK: | `-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-parallel-for.c:24:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: `-FunctionDecl {{.*}} <line:30:1, line:36:1> line:30:6 test_five 'void (int, int, int)'
+// CHECK: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
+// CHECK: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
+// CHECK: `-CompoundStmt {{.*}} <col:37, line:36:1>
+// CHECK: `-OMPParallelForDirective {{.*}} <line:31:1, col:37>
+// CHECK: |-OMPCollapseClause {{.*}} <col:26, col:36>
+// CHECK: | `-ConstantExpr {{.*}} <col:35> 'int'
+// CHECK: | |-value: Int 2
+// CHECK: | `-IntegerLiteral {{.*}} <col:35> 'int' 2
+// CHECK: `-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-parallel-for.c:31:1) *const restrict'
+// CHECK: | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
diff --git a/clang/test/AST/ast-dump-openmp-parallel-sections.c b/clang/test/AST/ast-dump-openmp-parallel-sections.c
index b7706c1c58c65..681ab9c83510c 100644
--- a/clang/test/AST/ast-dump-openmp-parallel-sections.c
+++ b/clang/test/AST/ast-dump-openmp-parallel-sections.c
@@ -21,5 +21,5 @@ void test_one(void) {
// CHECK-NEXT: |-CompoundStmt {{.*}} <col:3, col:7>
// CHECK-NEXT: | `-NullStmt {{.*}} <col:5>
// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <line:9:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-parallel-sections.c:9:1) *const restrict'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-parallel-sections.c:9:1) *const restrict'
diff --git a/clang/test/AST/ast-dump-openmp-parallel.c b/clang/test/AST/ast-dump-openmp-parallel.c
index 9bcd4eb06b4fd..05bba54415b8f 100644
--- a/clang/test/AST/ast-dump-openmp-parallel.c
+++ b/clang/test/AST/ast-dump-openmp-parallel.c
@@ -13,5 +13,5 @@ void test(void) {
// CHECK-NEXT: `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
// CHECK-NEXT: |-NullStmt {{.*}} <col:3>
// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-parallel.c:4:1) *const restrict'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-parallel.c:4:1) *const restrict'
diff --git a/clang/test/AST/ast-dump-openmp-simd.c b/clang/test/AST/ast-dump-openmp-simd.c
index cffbb9065f1d6..c5853be236774 100644
--- a/clang/test/AST/ast-dump-openmp-simd.c
+++ b/clang/test/AST/ast-dump-openmp-simd.c
@@ -37,209 +37,209 @@ void test_five(int x, int y, int z) {
// CHECK: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>
// CHECK: |-FunctionDecl {{.*}} <{{.*}}ast-dump-openmp-simd.c:3:1, line:7: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:7:1>
-// CHECK-NEXT: | `-OMPSimdDirective {{.*}} <line:4:1, col:17>
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:9:1, line:14:1> line:9:6 test_two 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:29, line:14:1>
-// CHECK-NEXT: | `-OMPSimdDirective {{.*}} <line:10:1, col:17>
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | |-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
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:16:1, line:21:1> line:16:6 test_three 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:31, line:21:1>
-// CHECK-NEXT: | `-OMPSimdDirective {{.*}} <line:17:1, col:29>
-// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:18, col:28>
-// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:27> 'int'
-// CHECK-NEXT: | | |-value: Int 1
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:27> 'int' 1
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | |-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
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:23:1, line:28:1> line:23:6 test_four 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:30, line:28:1>
-// CHECK-NEXT: | `-OMPSimdDirective {{.*}} <line:24:1, col:29>
-// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:18, col:28>
-// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:27> 'int'
-// CHECK-NEXT: | | |-value: Int 2
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:27> 'int' 2
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: `-FunctionDecl {{.*}} <line:30:1, line:36:1> line:30:6 test_five 'void (int, int, int)'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
-// CHECK-NEXT: `-CompoundStmt {{.*}} <col:37, line:36:1>
-// CHECK-NEXT: `-OMPSimdDirective {{.*}} <line:31:1, col:29>
-// CHECK-NEXT: |-OMPCollapseClause {{.*}} <col:18, col:28>
-// CHECK-NEXT: | `-ConstantExpr {{.*}} <col:27> 'int'
-// CHECK-NEXT: | |-value: Int 2
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:27> 'int' 2
-// CHECK-NEXT: `-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-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
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-simd.c:31:1) *const restrict'
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:22, line:7:1>
+// CHECK: | `-OMPSimdDirective {{.*}} <line:4:1, col:17>
+// CHECK: | `-CapturedStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-simd.c:4:1) *const restrict'
+// CHECK: | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:9:1, line:14:1> line:9:6 test_two 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:29, line:14:1>
+// CHECK: | `-OMPSimdDirective {{.*}} <line:10:1, col:17>
+// CHECK: | `-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-simd.c:10:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:16:1, line:21:1> line:16:6 test_three 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:31, line:21:1>
+// CHECK: | `-OMPSimdDirective {{.*}} <line:17:1, col:29>
+// CHECK: | |-OMPCollapseClause {{.*}} <col:18, col:28>
+// CHECK: | | `-ConstantExpr {{.*}} <col:27> 'int'
+// CHECK: | | |-value: Int 1
+// CHECK: | | `-IntegerLiteral {{.*}} <col:27> 'int' 1
+// CHECK: | `-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-simd.c:17:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:23:1, line:28:1> line:23:6 test_four 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:30, line:28:1>
+// CHECK: | `-OMPSimdDirective {{.*}} <line:24:1, col:29>
+// CHECK: | |-OMPCollapseClause {{.*}} <col:18, col:28>
+// CHECK: | | `-ConstantExpr {{.*}} <col:27> 'int'
+// CHECK: | | |-value: Int 2
+// CHECK: | | `-IntegerLiteral {{.*}} <col:27> 'int' 2
+// CHECK: | `-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-simd.c:24:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: `-FunctionDecl {{.*}} <line:30:1, line:36:1> line:30:6 test_five 'void (int, int, int)'
+// CHECK: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
+// CHECK: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
+// CHECK: `-CompoundStmt {{.*}} <col:37, line:36:1>
+// CHECK: `-OMPSimdDirective {{.*}} <line:31:1, col:29>
+// CHECK: |-OMPCollapseClause {{.*}} <col:18, col:28>
+// CHECK: | `-ConstantExpr {{.*}} <col:27> 'int'
+// CHECK: | |-value: Int 2
+// CHECK: | `-IntegerLiteral {{.*}} <col:27> 'int' 2
+// CHECK: `-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-simd.c:31:1) *const restrict'
+// CHECK: | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
diff --git a/clang/test/AST/ast-dump-openmp-target-data.c b/clang/test/AST/ast-dump-openmp-target-data.c
index 0abf6f4ca2dfb..3d780c1e52774 100644
--- a/clang/test/AST/ast-dump-openmp-target-data.c
+++ b/clang/test/AST/ast-dump-openmp-target-data.c
@@ -8,7 +8,7 @@ void test(int x) {
// CHECK: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>
// CHECK: `-FunctionDecl {{.*}} <{{.*}}ast-dump-openmp-target-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: `-CompoundStmt {{.*}} <col:18, line:6:1>
// CHECK-NEXT: `-OMPTargetDataDirective {{.*}} <line:4:1, col:31>
// CHECK-NEXT: |-OMPMapClause {{.*}} <col:25, col:30>
// CHECK-NEXT: | `-DeclRefExpr {{.*}} <col:29> 'int' lvalue ParmVar {{.*}} 'x' 'int'
diff --git a/clang/test/AST/ast-dump-openmp-target-enter-data.c b/clang/test/AST/ast-dump-openmp-target-enter-data.c
index fa516f1adb773..d944dda48c842 100644
--- a/clang/test/AST/ast-dump-openmp-target-enter-data.c
+++ b/clang/test/AST/ast-dump-openmp-target-enter-data.c
@@ -8,17 +8,17 @@ void test(int x) {
// CHECK: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>
// 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: `-CompoundStmt {{.*}} <col:18, line:6:1>
// CHECK-NEXT: `-OMPTargetEnterDataDirective {{.*}} <line:4:1, 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:1>
// CHECK-NEXT: `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
// CHECK-NEXT: |-CompoundStmt {{.*}} <col:1>
-// CHECK-NEXT: |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK-NEXT: |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-enter-data.c:4:1) *const restrict'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-enter-data.c:4:1) *const restrict'
diff --git a/clang/test/AST/ast-dump-openmp-target-exit-data.c b/clang/test/AST/ast-dump-openmp-target-exit-data.c
index 255abe66dcf3c..c9db3e61f3cdb 100644
--- a/clang/test/AST/ast-dump-openmp-target-exit-data.c
+++ b/clang/test/AST/ast-dump-openmp-target-exit-data.c
@@ -8,17 +8,17 @@ void test(int x) {
// CHECK: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>
// 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: `-CompoundStmt {{.*}} <col:18, line:6:1>
// CHECK-NEXT: `-OMPTargetExitDataDirective {{.*}} <line:4:1, 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:1>
// CHECK-NEXT: `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
// CHECK-NEXT: |-CompoundStmt {{.*}} <col:1>
-// CHECK-NEXT: |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK-NEXT: |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-exit-data.c:4:1) *const restrict'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-exit-data.c:4:1) *const restrict'
diff --git a/clang/test/AST/ast-dump-openmp-target-parallel-for-simd.c b/clang/test/AST/ast-dump-openmp-target-parallel-for-simd.c
index cae1f0e018c59..2de5b16fe7eb5 100644
--- a/clang/test/AST/ast-dump-openmp-target-parallel-for-simd.c
+++ b/clang/test/AST/ast-dump-openmp-target-parallel-for-simd.c
@@ -37,924 +37,924 @@ void test_five(int x, int y, int z) {
// CHECK: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>
// CHECK: |-FunctionDecl {{.*}} <{{.*}}ast-dump-openmp-target-parallel-for-simd.c:3:1, line:7: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:7:1>
-// CHECK-NEXT: | `-OMPTargetParallelForSimdDirective {{.*}} <line:4:1, col:37>
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:5:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <col:3, line:6:5>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:5:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <col:3, line:6:5>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:5:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <col:3, line:6:5>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:5:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <col:3, line:6:5>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:9:1, line:14:1> line:9:6 test_two 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:29, line:14:1>
-// CHECK-NEXT: | `-OMPTargetParallelForSimdDirective {{.*}} <line:10:1, col:37>
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:11:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:11:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:11:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | |-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
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:16:1, line:21:1> line:16:6 test_three 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:31, line:21:1>
-// CHECK-NEXT: | `-OMPTargetParallelForSimdDirective {{.*}} <line:17:1, col:49>
-// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:38, col:48>
-// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:47> 'int'
-// CHECK-NEXT: | | |-value: Int 1
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:47> 'int' 1
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:18:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:18:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:18:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | |-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
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:23:1, line:28:1> line:23:6 test_four 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:30, line:28:1>
-// CHECK-NEXT: | `-OMPTargetParallelForSimdDirective {{.*}} <line:24:1, col:49>
-// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:38, col:48>
-// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:47> 'int'
-// CHECK-NEXT: | | |-value: Int 2
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:47> 'int' 2
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:25:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:26:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:25:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:26:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:25:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:26:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: `-FunctionDecl {{.*}} <line:30:1, line:36:1> line:30:6 test_five 'void (int, int, int)'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
-// CHECK-NEXT: `-CompoundStmt {{.*}} <col:37, line:36:1>
-// CHECK-NEXT: `-OMPTargetParallelForSimdDirective {{.*}} <line:31:1, col:49>
-// CHECK-NEXT: |-OMPCollapseClause {{.*}} <col:38, col:48>
-// CHECK-NEXT: | `-ConstantExpr {{.*}} <col:47> 'int'
-// CHECK-NEXT: | |-value: Int 2
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:47> 'int' 2
-// CHECK-NEXT: |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: `-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-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
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:31:1) *const restrict'
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:31:1) *const restrict'
-// CHECK-NEXT: | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:32:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:33:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-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
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:31:1) *const restrict'
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:31:1) *const restrict'
-// CHECK-NEXT: | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:32:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:33:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
-// CHECK-NEXT: | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-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
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:31:1) *const restrict'
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:31:1) *const restrict'
-// CHECK-NEXT: | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:32:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:33:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
-// CHECK-NEXT: | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-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
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:31:1) *const restrict'
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:22, line:7:1>
+// CHECK: | `-OMPTargetParallelForSimdDirective {{.*}} <line:4:1, col:37>
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | `-DeclRefExpr {{.*}} <line:5:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <col:3, line:6:5>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:4:1) *const restrict'
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:4:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:5:23> col:23 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <col:3, line:6:5>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:4:1) *const restrict'
+// CHECK: | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:4:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | `-FieldDecl {{.*}} <line:5:23> col:23 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <col:3, line:6:5>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:4:1) *const restrict'
+// CHECK: | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:4:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | `-FieldDecl {{.*}} <line:5:23> col:23 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <col:3, line:6:5>
+// CHECK: | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:4:1) *const restrict'
+// CHECK: | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:9:1, line:14:1> line:9:6 test_two 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:29, line:14:1>
+// CHECK: | `-OMPTargetParallelForSimdDirective {{.*}} <line:10:1, col:37>
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:10:1) *const restrict'
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:10:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:11:23> col:23 implicit 'int'
+// CHECK: | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:10:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:10:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:11:23> col:23 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:10:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:10:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:11:23> col:23 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:10:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:16:1, line:21:1> line:16:6 test_three 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:31, line:21:1>
+// CHECK: | `-OMPTargetParallelForSimdDirective {{.*}} <line:17:1, col:49>
+// CHECK: | |-OMPCollapseClause {{.*}} <col:38, col:48>
+// CHECK: | | `-ConstantExpr {{.*}} <col:47> 'int'
+// CHECK: | | |-value: Int 1
+// CHECK: | | `-IntegerLiteral {{.*}} <col:47> 'int' 1
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:17:1) *const restrict'
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:17:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:18:23> col:23 implicit 'int'
+// CHECK: | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:17:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:17:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:18:23> col:23 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:17:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:17:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:18:23> col:23 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:17:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:23:1, line:28:1> line:23:6 test_four 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:30, line:28:1>
+// CHECK: | `-OMPTargetParallelForSimdDirective {{.*}} <line:24:1, col:49>
+// CHECK: | |-OMPCollapseClause {{.*}} <col:38, col:48>
+// CHECK: | | `-ConstantExpr {{.*}} <col:47> 'int'
+// CHECK: | | |-value: Int 2
+// CHECK: | | `-IntegerLiteral {{.*}} <col:47> 'int' 2
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:24:1) *const restrict'
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:24:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:25:23> col:23 implicit 'int'
+// CHECK: | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:26:25> col:25 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:24:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:24:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:25:23> col:23 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:26:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:24:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:24:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:25:23> col:23 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:26:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:24:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: `-FunctionDecl {{.*}} <line:30:1, line:36:1> line:30:6 test_five 'void (int, int, int)'
+// CHECK: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
+// CHECK: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
+// CHECK: `-CompoundStmt {{.*}} <col:37, line:36:1>
+// CHECK: `-OMPTargetParallelForSimdDirective {{.*}} <line:31:1, col:49>
+// CHECK: |-OMPCollapseClause {{.*}} <col:38, col:48>
+// CHECK: | `-ConstantExpr {{.*}} <col:47> 'int'
+// CHECK: | |-value: Int 2
+// CHECK: | `-IntegerLiteral {{.*}} <col:47> 'int' 2
+// CHECK: |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: `-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:31:1) *const restrict'
+// CHECK: | | | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:31:1) *const restrict'
+// CHECK: | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | |-FieldDecl {{.*}} <line:32:23> col:23 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | |-FieldDecl {{.*}} <line:33:25> col:25 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:31:1) *const restrict'
+// CHECK: | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:31:1) *const restrict'
+// CHECK: | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | |-FieldDecl {{.*}} <line:32:23> col:23 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | |-FieldDecl {{.*}} <line:33:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
+// CHECK: | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:31:1) *const restrict'
+// CHECK: | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:31:1) *const restrict'
+// CHECK: | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | |-FieldDecl {{.*}} <line:32:23> col:23 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | |-FieldDecl {{.*}} <line:33:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
+// CHECK: | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for-simd.c:31:1) *const restrict'
+// CHECK: | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
diff --git a/clang/test/AST/ast-dump-openmp-target-parallel-for.c b/clang/test/AST/ast-dump-openmp-target-parallel-for.c
index 53651169e449a..7fab20a3945f5 100644
--- a/clang/test/AST/ast-dump-openmp-target-parallel-for.c
+++ b/clang/test/AST/ast-dump-openmp-target-parallel-for.c
@@ -37,924 +37,924 @@ void test_five(int x, int y, int z) {
// CHECK: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>
// CHECK: |-FunctionDecl {{.*}} <{{.*}}ast-dump-openmp-target-parallel-for.c:3:1, line:7: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:7:1>
-// CHECK-NEXT: | `-OMPTargetParallelForDirective {{.*}} <line:4:1, col:32>
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:5:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <col:3, line:6:5>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:5:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <col:3, line:6:5>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:4:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:5:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <col:3, line:6:5>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:4:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:5:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <col:3, line:6:5>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:4:1) *const restrict'
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:9:1, line:14:1> line:9:6 test_two 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:29, line:14:1>
-// CHECK-NEXT: | `-OMPTargetParallelForDirective {{.*}} <line:10:1, col:32>
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:11:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:10:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:11:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:10:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:11:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | |-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
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:10:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:16:1, line:21:1> line:16:6 test_three 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:31, line:21:1>
-// CHECK-NEXT: | `-OMPTargetParallelForDirective {{.*}} <line:17:1, col:44>
-// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:33, col:43>
-// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:42> 'int'
-// CHECK-NEXT: | | |-value: Int 1
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:42> 'int' 1
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:18:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:17:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:18:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:17:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:18:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | |-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
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:17:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:23:1, line:28:1> line:23:6 test_four 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:30, line:28:1>
-// CHECK-NEXT: | `-OMPTargetParallelForDirective {{.*}} <line:24:1, col:44>
-// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:33, col:43>
-// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:42> 'int'
-// CHECK-NEXT: | | |-value: Int 2
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:42> 'int' 2
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:25:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:26:5> col:5 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:24:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:25:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:26:5> col:5 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:24:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:25:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:26:5> col:5 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:24:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: `-FunctionDecl {{.*}} <line:30:1, line:36:1> line:30:6 test_five 'void (int, int, int)'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
-// CHECK-NEXT: `-CompoundStmt {{.*}} <col:37, line:36:1>
-// CHECK-NEXT: `-OMPTargetParallelForDirective {{.*}} <line:31:1, col:44>
-// CHECK-NEXT: |-OMPCollapseClause {{.*}} <col:33, col:43>
-// CHECK-NEXT: | `-ConstantExpr {{.*}} <col:42> 'int'
-// CHECK-NEXT: | |-value: Int 2
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:42> 'int' 2
-// CHECK-NEXT: |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: `-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-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
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:31:1) *const restrict'
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:31:1) *const restrict'
-// CHECK-NEXT: | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:32:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:33:5> col:5 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-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
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:31:1) *const restrict'
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:31:1) *const restrict'
-// CHECK-NEXT: | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:32:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:33:5> col:5 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
-// CHECK-NEXT: | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-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
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:31:1) *const restrict'
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:31:1) *const restrict'
-// CHECK-NEXT: | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:32:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:33:5> col:5 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
-// CHECK-NEXT: | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-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
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:31:1) *const restrict'
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:22, line:7:1>
+// CHECK: | `-OMPTargetParallelForDirective {{.*}} <line:4:1, col:32>
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | `-DeclRefExpr {{.*}} <line:5:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <col:3, line:6:5>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:4:1) *const restrict'
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:4:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:5:3> col:3 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <col:3, line:6:5>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:4:1) *const restrict'
+// CHECK: | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:4:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | `-FieldDecl {{.*}} <line:5:3> col:3 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <col:3, line:6:5>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:4:1) *const restrict'
+// CHECK: | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:4:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | `-FieldDecl {{.*}} <line:5:3> col:3 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <col:3, line:6:5>
+// CHECK: | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:4:1) *const restrict'
+// CHECK: | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:9:1, line:14:1> line:9:6 test_two 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:29, line:14:1>
+// CHECK: | `-OMPTargetParallelForDirective {{.*}} <line:10:1, col:32>
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:10:1) *const restrict'
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:10:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:11:3> col:3 implicit 'int'
+// CHECK: | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:10:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:10:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:11:3> col:3 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:10:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:10:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:11:3> col:3 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:10:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:16:1, line:21:1> line:16:6 test_three 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:31, line:21:1>
+// CHECK: | `-OMPTargetParallelForDirective {{.*}} <line:17:1, col:44>
+// CHECK: | |-OMPCollapseClause {{.*}} <col:33, col:43>
+// CHECK: | | `-ConstantExpr {{.*}} <col:42> 'int'
+// CHECK: | | |-value: Int 1
+// CHECK: | | `-IntegerLiteral {{.*}} <col:42> 'int' 1
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:17:1) *const restrict'
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:17:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:18:3> col:3 implicit 'int'
+// CHECK: | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:17:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:17:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:18:3> col:3 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:17:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:17:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:18:3> col:3 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:17:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:23:1, line:28:1> line:23:6 test_four 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:30, line:28:1>
+// CHECK: | `-OMPTargetParallelForDirective {{.*}} <line:24:1, col:44>
+// CHECK: | |-OMPCollapseClause {{.*}} <col:33, col:43>
+// CHECK: | | `-ConstantExpr {{.*}} <col:42> 'int'
+// CHECK: | | |-value: Int 2
+// CHECK: | | `-IntegerLiteral {{.*}} <col:42> 'int' 2
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:24:1) *const restrict'
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:24:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:25:3> col:3 implicit 'int'
+// CHECK: | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:26:5> col:5 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:24:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:24:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:25:3> col:3 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:26:5> col:5 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:24:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:24:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:25:3> col:3 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:26:5> col:5 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:24:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: `-FunctionDecl {{.*}} <line:30:1, line:36:1> line:30:6 test_five 'void (int, int, int)'
+// CHECK: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
+// CHECK: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
+// CHECK: `-CompoundStmt {{.*}} <col:37, line:36:1>
+// CHECK: `-OMPTargetParallelForDirective {{.*}} <line:31:1, col:44>
+// CHECK: |-OMPCollapseClause {{.*}} <col:33, col:43>
+// CHECK: | `-ConstantExpr {{.*}} <col:42> 'int'
+// CHECK: | |-value: Int 2
+// CHECK: | `-IntegerLiteral {{.*}} <col:42> 'int' 2
+// CHECK: |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: `-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:31:1) *const restrict'
+// CHECK: | | | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:31:1) *const restrict'
+// CHECK: | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | |-FieldDecl {{.*}} <line:32:3> col:3 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | |-FieldDecl {{.*}} <line:33:5> col:5 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:31:1) *const restrict'
+// CHECK: | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:31:1) *const restrict'
+// CHECK: | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | |-FieldDecl {{.*}} <line:32:3> col:3 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | |-FieldDecl {{.*}} <line:33:5> col:5 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
+// CHECK: | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:31:1) *const restrict'
+// CHECK: | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:31:1) *const restrict'
+// CHECK: | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | |-FieldDecl {{.*}} <line:32:3> col:3 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | |-FieldDecl {{.*}} <line:33:5> col:5 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
+// CHECK: | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel-for.c:31:1) *const restrict'
+// CHECK: | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
diff --git a/clang/test/AST/ast-dump-openmp-target-parallel.c b/clang/test/AST/ast-dump-openmp-target-parallel.c
index 3720856e7f4a7..b7cfe5258b5d5 100644
--- a/clang/test/AST/ast-dump-openmp-target-parallel.c
+++ b/clang/test/AST/ast-dump-openmp-target-parallel.c
@@ -17,37 +17,37 @@ void test(void) {
// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
// CHECK-NEXT: | | |-NullStmt {{.*}} <col:3>
// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel.c:4:1) *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel.c:4:1) *const restrict'
-// CHECK-NEXT: | |-RecordDecl {{.*}} <col:1> col:1 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: | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel.c:4:1) *const restrict'
-// CHECK-NEXT: |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel.c:4:1) *const restrict'
-// CHECK-NEXT: |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | `-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// 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: | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel.c:4:1) *const restrict'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel.c:4:1) *const restrict'
-// CHECK-NEXT: |-RecordDecl {{.*}} <col:1> col:1 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: |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel.c:4:1) *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel.c:4:1) *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel.c:4:1) *const restrict'
+// CHECK: | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | `-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-NullStmt {{.*}} <line:5:3>
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel.c:4:1) *const restrict'
+// CHECK: |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .global_tid. 'const int'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel.c:4:1) *const restrict'
+// CHECK: |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | `-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: |-CapturedStmt {{.*}} <line:5:3>
+// CHECK: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-NullStmt {{.*}} <col:3>
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel.c:4:1) *const restrict'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel.c:4:1) *const restrict'
+// CHECK: |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | `-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: |-NullStmt {{.*}} <line:5:3>
+// CHECK: |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-parallel.c:4:1) *const restrict'
diff --git a/clang/test/AST/ast-dump-openmp-target-simd.c b/clang/test/AST/ast-dump-openmp-target-simd.c
index 7092a94dacd12..7b439e9d60890 100644
--- a/clang/test/AST/ast-dump-openmp-target-simd.c
+++ b/clang/test/AST/ast-dump-openmp-target-simd.c
@@ -37,464 +37,464 @@ void test_five(int x, int y, int z) {
// CHECK: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>
// CHECK: |-FunctionDecl {{.*}} <{{.*}}ast-dump-openmp-target-simd.c:3:1, line:7: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:7:1>
-// CHECK-NEXT: | `-OMPTargetSimdDirective {{.*}} <line:4:1, col:24>
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:5:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <col:3, line:6:5>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:5:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <col:3, line:6:5>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:9:1, line:14:1> line:9:6 test_two 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:29, line:14:1>
-// CHECK-NEXT: | `-OMPTargetSimdDirective {{.*}} <line:10:1, col:24>
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:11:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | |-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
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:16:1, line:21:1> line:16:6 test_three 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:31, line:21:1>
-// CHECK-NEXT: | `-OMPTargetSimdDirective {{.*}} <line:17:1, col:36>
-// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:25, col:35>
-// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:34> 'int'
-// CHECK-NEXT: | | |-value: Int 1
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:34> 'int' 1
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:18:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | |-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
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:23:1, line:28:1> line:23:6 test_four 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:30, line:28:1>
-// CHECK-NEXT: | `-OMPTargetSimdDirective {{.*}} <line:24:1, col:36>
-// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:25, col:35>
-// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:34> 'int'
-// CHECK-NEXT: | | |-value: Int 2
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:34> 'int' 2
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:25:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:26:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: `-FunctionDecl {{.*}} <line:30:1, line:36:1> line:30:6 test_five 'void (int, int, int)'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
-// CHECK-NEXT: `-CompoundStmt {{.*}} <col:37, line:36:1>
-// CHECK-NEXT: `-OMPTargetSimdDirective {{.*}} <line:31:1, col:36>
-// CHECK-NEXT: |-OMPCollapseClause {{.*}} <col:25, col:35>
-// CHECK-NEXT: | `-ConstantExpr {{.*}} <col:34> 'int'
-// CHECK-NEXT: | |-value: Int 2
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:34> 'int' 2
-// CHECK-NEXT: |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: `-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-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
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-simd.c:31:1) *const restrict'
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-simd.c:31:1) *const restrict'
-// CHECK-NEXT: | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:32:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:33:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
-// CHECK-NEXT: | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-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
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-simd.c:31:1) *const restrict'
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:22, line:7:1>
+// CHECK: | `-OMPTargetSimdDirective {{.*}} <line:4:1, col:24>
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | `-DeclRefExpr {{.*}} <line:5:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <col:3, line:6:5>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-simd.c:4:1) *const restrict'
+// CHECK: | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-simd.c:4:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | `-FieldDecl {{.*}} <line:5:23> col:23 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <col:3, line:6:5>
+// CHECK: | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-simd.c:4:1) *const restrict'
+// CHECK: | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:9:1, line:14:1> line:9:6 test_two 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:29, line:14:1>
+// CHECK: | `-OMPTargetSimdDirective {{.*}} <line:10:1, col:24>
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-simd.c:10:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-simd.c:10:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:11:23> col:23 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-simd.c:10:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:16:1, line:21:1> line:16:6 test_three 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:31, line:21:1>
+// CHECK: | `-OMPTargetSimdDirective {{.*}} <line:17:1, col:36>
+// CHECK: | |-OMPCollapseClause {{.*}} <col:25, col:35>
+// CHECK: | | `-ConstantExpr {{.*}} <col:34> 'int'
+// CHECK: | | |-value: Int 1
+// CHECK: | | `-IntegerLiteral {{.*}} <col:34> 'int' 1
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-simd.c:17:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-simd.c:17:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:18:23> col:23 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-simd.c:17:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:23:1, line:28:1> line:23:6 test_four 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:30, line:28:1>
+// CHECK: | `-OMPTargetSimdDirective {{.*}} <line:24:1, col:36>
+// CHECK: | |-OMPCollapseClause {{.*}} <col:25, col:35>
+// CHECK: | | `-ConstantExpr {{.*}} <col:34> 'int'
+// CHECK: | | |-value: Int 2
+// CHECK: | | `-IntegerLiteral {{.*}} <col:34> 'int' 2
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-simd.c:24:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-simd.c:24:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:25:23> col:23 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:26:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-simd.c:24:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: `-FunctionDecl {{.*}} <line:30:1, line:36:1> line:30:6 test_five 'void (int, int, int)'
+// CHECK: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
+// CHECK: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
+// CHECK: `-CompoundStmt {{.*}} <col:37, line:36:1>
+// CHECK: `-OMPTargetSimdDirective {{.*}} <line:31:1, col:36>
+// CHECK: |-OMPCollapseClause {{.*}} <col:25, col:35>
+// CHECK: | `-ConstantExpr {{.*}} <col:34> 'int'
+// CHECK: | |-value: Int 2
+// CHECK: | `-IntegerLiteral {{.*}} <col:34> 'int' 2
+// CHECK: |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: `-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-simd.c:31:1) *const restrict'
+// CHECK: | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-simd.c:31:1) *const restrict'
+// CHECK: | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | |-FieldDecl {{.*}} <line:32:23> col:23 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | |-FieldDecl {{.*}} <line:33:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
+// CHECK: | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-simd.c:31:1) *const restrict'
+// CHECK: | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
diff --git a/clang/test/AST/ast-dump-openmp-target-teams-distribute-parallel-for-simd.c b/clang/test/AST/ast-dump-openmp-target-teams-distribute-parallel-for-simd.c
index c209a0456d7a0..658870819ce19 100644
--- a/clang/test/AST/ast-dump-openmp-target-teams-distribute-parallel-for-simd.c
+++ b/clang/test/AST/ast-dump-openmp-target-teams-distribute-parallel-for-simd.c
@@ -37,1924 +37,1924 @@ void test_five(int x, int y, int z) {
// CHECK: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>
// CHECK: |-FunctionDecl {{.*}} <{{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:3:1, line:7: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:7:1>
-// CHECK-NEXT: | `-OMPTargetTeamsDistributeParallelForSimdDirective {{.*}} <line:4:1, col:54>
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:5:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <col:3, line:6:5>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | | | |-ForStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | | | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | | | `-FieldDecl {{.*}} <line:5:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <col:3, line:6:5>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:5:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <col:3, line:6:5>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:5:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <col:3, line:6:5>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:5:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <col:3, line:6:5>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:5:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <col:3, line:6:5>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:5:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <col:3, line:6:5>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:5:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <col:3, line:6:5>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:9:1, line:14:1> line:9:6 test_two 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:29, line:14:1>
-// CHECK-NEXT: | `-OMPTargetTeamsDistributeParallelForSimdDirective {{.*}} <line:10:1, col:54>
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | | | |-FieldDecl {{.*}} <line:11:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:11:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:11:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:11:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:11:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:11:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:11:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | |-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
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:16:1, line:21:1> line:16:6 test_three 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:31, line:21:1>
-// CHECK-NEXT: | `-OMPTargetTeamsDistributeParallelForSimdDirective {{.*}} <line:17:1, col:66>
-// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:55, col:65>
-// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:64> 'int'
-// CHECK-NEXT: | | |-value: Int 1
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:64> 'int' 1
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | | | |-FieldDecl {{.*}} <line:18:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:18:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:18:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:18:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:18:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:18:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:18:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | |-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
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:23:1, line:28:1> line:23:6 test_four 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:30, line:28:1>
-// CHECK-NEXT: | `-OMPTargetTeamsDistributeParallelForSimdDirective {{.*}} <line:24:1, col:66>
-// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:55, col:65>
-// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:64> 'int'
-// CHECK-NEXT: | | |-value: Int 2
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:64> 'int' 2
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | | | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | | | |-FieldDecl {{.*}} <line:25:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | | | `-FieldDecl {{.*}} <line:26:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:25:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:26:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:25:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:26:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:25:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:26:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:25:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:26:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:25:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:26:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:25:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:26:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: `-FunctionDecl {{.*}} <line:30:1, line:36:1> line:30:6 test_five 'void (int, int, int)'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
-// CHECK-NEXT: `-CompoundStmt {{.*}} <col:37, line:36:1>
-// CHECK-NEXT: `-OMPTargetTeamsDistributeParallelForSimdDirective {{.*}} <line:31:1, col:66>
-// CHECK-NEXT: |-OMPCollapseClause {{.*}} <col:55, col:65>
-// CHECK-NEXT: | `-ConstantExpr {{.*}} <col:64> 'int'
-// CHECK-NEXT: | |-value: Int 2
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:64> 'int' 2
-// CHECK-NEXT: |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: `-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | | | | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:1) *const restrict'
-// CHECK-NEXT: | | | | | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | | | | | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:1) *const restrict'
-// CHECK-NEXT: | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | | |-FieldDecl {{.*}} <line:32:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | | |-FieldDecl {{.*}} <line:33:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
-// CHECK-NEXT: | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-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
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:1) *const restrict'
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:1) *const restrict'
-// CHECK-NEXT: | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:32:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:33:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-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
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:1) *const restrict'
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:1) *const restrict'
-// CHECK-NEXT: | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:32:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:33:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-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
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:1) *const restrict'
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:1) *const restrict'
-// CHECK-NEXT: | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:32:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:33:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
-// CHECK-NEXT: | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-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
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:1) *const restrict'
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:1) *const restrict'
-// CHECK-NEXT: | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:32:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:33:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-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
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:1) *const restrict'
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:1) *const restrict'
-// CHECK-NEXT: | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:32:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:33:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
-// CHECK-NEXT: | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-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
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:1) *const restrict'
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:1) *const restrict'
-// CHECK-NEXT: | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:32:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:33:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
-// CHECK-NEXT: | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-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
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:1) *const restrict'
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:22, line:7:1>
+// CHECK: | `-OMPTargetTeamsDistributeParallelForSimdDirective {{.*}} <line:4:1, col:54>
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | `-DeclRefExpr {{.*}} <line:5:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <col:3, line:6:5>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | | | |-ForStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | | | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:1) *const restrict'
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:1) *const restrict'
+// CHECK: | | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | | | `-FieldDecl {{.*}} <line:5:23> col:23 implicit 'int'
+// CHECK: | | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <col:3, line:6:5>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:1) *const restrict'
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:5:23> col:23 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <col:3, line:6:5>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:1) *const restrict'
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:5:23> col:23 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <col:3, line:6:5>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:1) *const restrict'
+// CHECK: | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | `-FieldDecl {{.*}} <line:5:23> col:23 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <col:3, line:6:5>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:1) *const restrict'
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:5:23> col:23 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <col:3, line:6:5>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:1) *const restrict'
+// CHECK: | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | `-FieldDecl {{.*}} <line:5:23> col:23 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <col:3, line:6:5>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:1) *const restrict'
+// CHECK: | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | `-FieldDecl {{.*}} <line:5:23> col:23 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <col:3, line:6:5>
+// CHECK: | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:1) *const restrict'
+// CHECK: | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:9:1, line:14:1> line:9:6 test_two 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:29, line:14:1>
+// CHECK: | `-OMPTargetTeamsDistributeParallelForSimdDirective {{.*}} <line:10:1, col:54>
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | | | | | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:1) *const restrict'
+// CHECK: | | | | | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:1) *const restrict'
+// CHECK: | | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | | | |-FieldDecl {{.*}} <line:11:23> col:23 implicit 'int'
+// CHECK: | | | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
+// CHECK: | | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:1) *const restrict'
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:11:23> col:23 implicit 'int'
+// CHECK: | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:1) *const restrict'
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:11:23> col:23 implicit 'int'
+// CHECK: | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:11:23> col:23 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:1) *const restrict'
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:11:23> col:23 implicit 'int'
+// CHECK: | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:11:23> col:23 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:11:23> col:23 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:16:1, line:21:1> line:16:6 test_three 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:31, line:21:1>
+// CHECK: | `-OMPTargetTeamsDistributeParallelForSimdDirective {{.*}} <line:17:1, col:66>
+// CHECK: | |-OMPCollapseClause {{.*}} <col:55, col:65>
+// CHECK: | | `-ConstantExpr {{.*}} <col:64> 'int'
+// CHECK: | | |-value: Int 1
+// CHECK: | | `-IntegerLiteral {{.*}} <col:64> 'int' 1
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | | | | | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:1) *const restrict'
+// CHECK: | | | | | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:1) *const restrict'
+// CHECK: | | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | | | |-FieldDecl {{.*}} <line:18:23> col:23 implicit 'int'
+// CHECK: | | | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
+// CHECK: | | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:1) *const restrict'
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:18:23> col:23 implicit 'int'
+// CHECK: | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:1) *const restrict'
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:18:23> col:23 implicit 'int'
+// CHECK: | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:18:23> col:23 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:1) *const restrict'
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:18:23> col:23 implicit 'int'
+// CHECK: | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:18:23> col:23 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:18:23> col:23 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:23:1, line:28:1> line:23:6 test_four 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:30, line:28:1>
+// CHECK: | `-OMPTargetTeamsDistributeParallelForSimdDirective {{.*}} <line:24:1, col:66>
+// CHECK: | |-OMPCollapseClause {{.*}} <col:55, col:65>
+// CHECK: | | `-ConstantExpr {{.*}} <col:64> 'int'
+// CHECK: | | |-value: Int 2
+// CHECK: | | `-IntegerLiteral {{.*}} <col:64> 'int' 2
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | | | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:1) *const restrict'
+// CHECK: | | | | | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:1) *const restrict'
+// CHECK: | | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | | | |-FieldDecl {{.*}} <line:25:23> col:23 implicit 'int'
+// CHECK: | | | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | | | `-FieldDecl {{.*}} <line:26:25> col:25 implicit 'int'
+// CHECK: | | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:1) *const restrict'
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:25:23> col:23 implicit 'int'
+// CHECK: | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:26:25> col:25 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:1) *const restrict'
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:25:23> col:23 implicit 'int'
+// CHECK: | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:26:25> col:25 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:25:23> col:23 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:26:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:1) *const restrict'
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:25:23> col:23 implicit 'int'
+// CHECK: | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:26:25> col:25 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:25:23> col:23 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:26:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:25:23> col:23 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:26:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: `-FunctionDecl {{.*}} <line:30:1, line:36:1> line:30:6 test_five 'void (int, int, int)'
+// CHECK: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
+// CHECK: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
+// CHECK: `-CompoundStmt {{.*}} <col:37, line:36:1>
+// CHECK: `-OMPTargetTeamsDistributeParallelForSimdDirective {{.*}} <line:31:1, col:66>
+// CHECK: |-OMPCollapseClause {{.*}} <col:55, col:65>
+// CHECK: | `-ConstantExpr {{.*}} <col:64> 'int'
+// CHECK: | |-value: Int 2
+// CHECK: | `-IntegerLiteral {{.*}} <col:64> 'int' 2
+// CHECK: |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: `-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | | | | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | | | | | | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | | | | | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | | | | | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:1) *const restrict'
+// CHECK: | | | | | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | | | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:1) *const restrict'
+// CHECK: | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | | |-FieldDecl {{.*}} <line:32:23> col:23 implicit 'int'
+// CHECK: | | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | | |-FieldDecl {{.*}} <line:33:25> col:25 implicit 'int'
+// CHECK: | | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
+// CHECK: | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:1) *const restrict'
+// CHECK: | | | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:1) *const restrict'
+// CHECK: | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | |-FieldDecl {{.*}} <line:32:23> col:23 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | |-FieldDecl {{.*}} <line:33:25> col:25 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:1) *const restrict'
+// CHECK: | | | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:1) *const restrict'
+// CHECK: | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | |-FieldDecl {{.*}} <line:32:23> col:23 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | |-FieldDecl {{.*}} <line:33:25> col:25 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:1) *const restrict'
+// CHECK: | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:1) *const restrict'
+// CHECK: | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | |-FieldDecl {{.*}} <line:32:23> col:23 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | |-FieldDecl {{.*}} <line:33:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
+// CHECK: | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:1) *const restrict'
+// CHECK: | | | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:1) *const restrict'
+// CHECK: | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | |-FieldDecl {{.*}} <line:32:23> col:23 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | |-FieldDecl {{.*}} <line:33:25> col:25 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:1) *const restrict'
+// CHECK: | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:1) *const restrict'
+// CHECK: | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | |-FieldDecl {{.*}} <line:32:23> col:23 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | |-FieldDecl {{.*}} <line:33:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
+// CHECK: | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:1) *const restrict'
+// CHECK: | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:1) *const restrict'
+// CHECK: | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | |-FieldDecl {{.*}} <line:32:23> col:23 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | |-FieldDecl {{.*}} <line:33:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
+// CHECK: | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:1) *const restrict'
+// CHECK: | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
diff --git a/clang/test/AST/ast-dump-openmp-target-teams-distribute-parallel-for.c b/clang/test/AST/ast-dump-openmp-target-teams-distribute-parallel-for.c
index b13e096101e63..484a98414d02c 100644
--- a/clang/test/AST/ast-dump-openmp-target-teams-distribute-parallel-for.c
+++ b/clang/test/AST/ast-dump-openmp-target-teams-distribute-parallel-for.c
@@ -37,1924 +37,1924 @@ void test_five(int x, int y, int z) {
// CHECK: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>
// CHECK: |-FunctionDecl {{.*}} <{{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:3:1, line:7: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:7:1>
-// CHECK-NEXT: | `-OMPTargetTeamsDistributeParallelForDirective {{.*}} <line:4:1, col:49>
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:5:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <col:3, line:6:5>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | | | |-ForStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | | | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | | | `-FieldDecl {{.*}} <line:5:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <col:3, line:6:5>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:5:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <col:3, line:6:5>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:5:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <col:3, line:6:5>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:4:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:5:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <col:3, line:6:5>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:5:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <col:3, line:6:5>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:4:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:5:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <col:3, line:6:5>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:4:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:5:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <col:3, line:6:5>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:4:1) *const restrict'
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:9:1, line:14:1> line:9:6 test_two 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:29, line:14:1>
-// CHECK-NEXT: | `-OMPTargetTeamsDistributeParallelForDirective {{.*}} <line:10:1, col:49>
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | | | |-FieldDecl {{.*}} <line:11:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:11:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:11:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:10:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:11:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:11:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:10:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:11:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:10:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:11:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | |-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
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:10:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:16:1, line:21:1> line:16:6 test_three 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:31, line:21:1>
-// CHECK-NEXT: | `-OMPTargetTeamsDistributeParallelForDirective {{.*}} <line:17:1, col:61>
-// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:50, col:60>
-// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:59> 'int'
-// CHECK-NEXT: | | |-value: Int 1
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:59> 'int' 1
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | | | |-FieldDecl {{.*}} <line:18:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:18:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:18:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:17:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:18:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:18:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:17:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:18:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:17:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:18:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | |-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
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:17:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:23:1, line:28:1> line:23:6 test_four 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:30, line:28:1>
-// CHECK-NEXT: | `-OMPTargetTeamsDistributeParallelForDirective {{.*}} <line:24:1, col:61>
-// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:50, col:60>
-// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:59> 'int'
-// CHECK-NEXT: | | |-value: Int 2
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:59> 'int' 2
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | | | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | | | |-FieldDecl {{.*}} <line:25:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | | | `-FieldDecl {{.*}} <line:26:5> col:5 implicit 'int'
-// CHECK-NEXT: | | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:25:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:26:5> col:5 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:25:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:26:5> col:5 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:24:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:25:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:26:5> col:5 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:25:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:26:5> col:5 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:24:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:25:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:26:5> col:5 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:24:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:25:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:26:5> col:5 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:24:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: `-FunctionDecl {{.*}} <line:30:1, line:36:1> line:30:6 test_five 'void (int, int, int)'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
-// CHECK-NEXT: `-CompoundStmt {{.*}} <col:37, line:36:1>
-// CHECK-NEXT: `-OMPTargetTeamsDistributeParallelForDirective {{.*}} <line:31:1, col:61>
-// CHECK-NEXT: |-OMPCollapseClause {{.*}} <col:50, col:60>
-// CHECK-NEXT: | `-ConstantExpr {{.*}} <col:59> 'int'
-// CHECK-NEXT: | |-value: Int 2
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:59> 'int' 2
-// CHECK-NEXT: |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: `-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | | | | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:31:1) *const restrict'
-// CHECK-NEXT: | | | | | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | | | | | |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:31:1) *const restrict'
-// CHECK-NEXT: | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | | |-FieldDecl {{.*}} <line:32:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | | |-FieldDecl {{.*}} <line:33:5> col:5 implicit 'int'
-// CHECK-NEXT: | | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
-// CHECK-NEXT: | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-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
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:31:1) *const restrict'
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:31:1) *const restrict'
-// CHECK-NEXT: | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:32:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:33:5> col:5 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-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
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:31:1) *const restrict'
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:31:1) *const restrict'
-// CHECK-NEXT: | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:32:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:33:5> col:5 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-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
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:31:1) *const restrict'
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:31:1) *const restrict'
-// CHECK-NEXT: | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:32:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:33:5> col:5 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
-// CHECK-NEXT: | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-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
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:31:1) *const restrict'
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:31:1) *const restrict'
-// CHECK-NEXT: | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:32:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:33:5> col:5 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-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
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:31:1) *const restrict'
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:31:1) *const restrict'
-// CHECK-NEXT: | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:32:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:33:5> col:5 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
-// CHECK-NEXT: | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-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
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:31:1) *const restrict'
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:31:1) *const restrict'
-// CHECK-NEXT: | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:32:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:33:5> col:5 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
-// CHECK-NEXT: | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-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
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:31:1) *const restrict'
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:22, line:7:1>
+// CHECK: | `-OMPTargetTeamsDistributeParallelForDirective {{.*}} <line:4:1, col:49>
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | `-DeclRefExpr {{.*}} <line:5:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <col:3, line:6:5>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | | | |-ForStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | | | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:4:1) *const restrict'
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:4:1) *const restrict'
+// CHECK: | | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | | | `-FieldDecl {{.*}} <line:5:3> col:3 implicit 'int'
+// CHECK: | | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <col:3, line:6:5>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:4:1) *const restrict'
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:4:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:5:3> col:3 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <col:3, line:6:5>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:4:1) *const restrict'
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:4:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:5:3> col:3 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <col:3, line:6:5>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:4:1) *const restrict'
+// CHECK: | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:4:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | `-FieldDecl {{.*}} <line:5:3> col:3 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <col:3, line:6:5>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:4:1) *const restrict'
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:4:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:5:3> col:3 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <col:3, line:6:5>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:4:1) *const restrict'
+// CHECK: | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:4:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | `-FieldDecl {{.*}} <line:5:3> col:3 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <col:3, line:6:5>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:4:1) *const restrict'
+// CHECK: | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:4:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | `-FieldDecl {{.*}} <line:5:3> col:3 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <col:3, line:6:5>
+// CHECK: | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:4:1) *const restrict'
+// CHECK: | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:9:1, line:14:1> line:9:6 test_two 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:29, line:14:1>
+// CHECK: | `-OMPTargetTeamsDistributeParallelForDirective {{.*}} <line:10:1, col:49>
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | | | | | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:10:1) *const restrict'
+// CHECK: | | | | | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:10:1) *const restrict'
+// CHECK: | | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | | | |-FieldDecl {{.*}} <line:11:3> col:3 implicit 'int'
+// CHECK: | | | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
+// CHECK: | | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:10:1) *const restrict'
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:10:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:11:3> col:3 implicit 'int'
+// CHECK: | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:10:1) *const restrict'
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:10:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:11:3> col:3 implicit 'int'
+// CHECK: | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:10:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:10:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:11:3> col:3 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:10:1) *const restrict'
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:10:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:11:3> col:3 implicit 'int'
+// CHECK: | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:10:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:10:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:11:3> col:3 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:10:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:10:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:11:3> col:3 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:10:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:16:1, line:21:1> line:16:6 test_three 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:31, line:21:1>
+// CHECK: | `-OMPTargetTeamsDistributeParallelForDirective {{.*}} <line:17:1, col:61>
+// CHECK: | |-OMPCollapseClause {{.*}} <col:50, col:60>
+// CHECK: | | `-ConstantExpr {{.*}} <col:59> 'int'
+// CHECK: | | |-value: Int 1
+// CHECK: | | `-IntegerLiteral {{.*}} <col:59> 'int' 1
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | | | | | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:17:1) *const restrict'
+// CHECK: | | | | | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:17:1) *const restrict'
+// CHECK: | | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | | | |-FieldDecl {{.*}} <line:18:3> col:3 implicit 'int'
+// CHECK: | | | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
+// CHECK: | | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:17:1) *const restrict'
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:17:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:18:3> col:3 implicit 'int'
+// CHECK: | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:17:1) *const restrict'
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:17:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:18:3> col:3 implicit 'int'
+// CHECK: | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:17:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:17:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:18:3> col:3 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:17:1) *const restrict'
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:17:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:18:3> col:3 implicit 'int'
+// CHECK: | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:17:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:17:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:18:3> col:3 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:17:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:17:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:18:3> col:3 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:17:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:23:1, line:28:1> line:23:6 test_four 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:30, line:28:1>
+// CHECK: | `-OMPTargetTeamsDistributeParallelForDirective {{.*}} <line:24:1, col:61>
+// CHECK: | |-OMPCollapseClause {{.*}} <col:50, col:60>
+// CHECK: | | `-ConstantExpr {{.*}} <col:59> 'int'
+// CHECK: | | |-value: Int 2
+// CHECK: | | `-IntegerLiteral {{.*}} <col:59> 'int' 2
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | | | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:24:1) *const restrict'
+// CHECK: | | | | | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:24:1) *const restrict'
+// CHECK: | | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | | | |-FieldDecl {{.*}} <line:25:3> col:3 implicit 'int'
+// CHECK: | | | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | | | `-FieldDecl {{.*}} <line:26:5> col:5 implicit 'int'
+// CHECK: | | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:24:1) *const restrict'
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:24:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:25:3> col:3 implicit 'int'
+// CHECK: | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:26:5> col:5 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:24:1) *const restrict'
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:24:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:25:3> col:3 implicit 'int'
+// CHECK: | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:26:5> col:5 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:24:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:24:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:25:3> col:3 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:26:5> col:5 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:24:1) *const restrict'
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:24:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:25:3> col:3 implicit 'int'
+// CHECK: | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:26:5> col:5 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:24:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:24:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:25:3> col:3 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:26:5> col:5 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:24:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:24:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:25:3> col:3 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:26:5> col:5 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:24:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: `-FunctionDecl {{.*}} <line:30:1, line:36:1> line:30:6 test_five 'void (int, int, int)'
+// CHECK: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
+// CHECK: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
+// CHECK: `-CompoundStmt {{.*}} <col:37, line:36:1>
+// CHECK: `-OMPTargetTeamsDistributeParallelForDirective {{.*}} <line:31:1, col:61>
+// CHECK: |-OMPCollapseClause {{.*}} <col:50, col:60>
+// CHECK: | `-ConstantExpr {{.*}} <col:59> 'int'
+// CHECK: | |-value: Int 2
+// CHECK: | `-IntegerLiteral {{.*}} <col:59> 'int' 2
+// CHECK: |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: `-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | | | | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | | | | | | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | | | | | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | | | | | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:31:1) *const restrict'
+// CHECK: | | | | | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | | | |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:31:1) *const restrict'
+// CHECK: | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | | |-FieldDecl {{.*}} <line:32:3> col:3 implicit 'int'
+// CHECK: | | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | | |-FieldDecl {{.*}} <line:33:5> col:5 implicit 'int'
+// CHECK: | | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
+// CHECK: | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:31:1) *const restrict'
+// CHECK: | | | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:31:1) *const restrict'
+// CHECK: | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | |-FieldDecl {{.*}} <line:32:3> col:3 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | |-FieldDecl {{.*}} <line:33:5> col:5 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:31:1) *const restrict'
+// CHECK: | | | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:31:1) *const restrict'
+// CHECK: | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | |-FieldDecl {{.*}} <line:32:3> col:3 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | |-FieldDecl {{.*}} <line:33:5> col:5 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:31:1) *const restrict'
+// CHECK: | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:31:1) *const restrict'
+// CHECK: | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | |-FieldDecl {{.*}} <line:32:3> col:3 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | |-FieldDecl {{.*}} <line:33:5> col:5 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
+// CHECK: | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:31:1) *const restrict'
+// CHECK: | | | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:31:1) *const restrict'
+// CHECK: | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | |-FieldDecl {{.*}} <line:32:3> col:3 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | |-FieldDecl {{.*}} <line:33:5> col:5 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:31:1) *const restrict'
+// CHECK: | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:31:1) *const restrict'
+// CHECK: | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | |-FieldDecl {{.*}} <line:32:3> col:3 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | |-FieldDecl {{.*}} <line:33:5> col:5 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
+// CHECK: | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:31:1) *const restrict'
+// CHECK: | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:31:1) *const restrict'
+// CHECK: | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | |-FieldDecl {{.*}} <line:32:3> col:3 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | |-FieldDecl {{.*}} <line:33:5> col:5 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
+// CHECK: | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for.c:31:1) *const restrict'
+// CHECK: | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
diff --git a/clang/test/AST/ast-dump-openmp-target-teams-distribute-simd.c b/clang/test/AST/ast-dump-openmp-target-teams-distribute-simd.c
index b27e480c93506..a0bdf1a31710b 100644
--- a/clang/test/AST/ast-dump-openmp-target-teams-distribute-simd.c
+++ b/clang/test/AST/ast-dump-openmp-target-teams-distribute-simd.c
@@ -37,924 +37,924 @@ void test_five(int x, int y, int z) {
// CHECK: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>
// CHECK: |-FunctionDecl {{.*}} <{{.*}}ast-dump-openmp-target-teams-distribute-simd.c:3:1, line:7: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:7:1>
-// CHECK-NEXT: | `-OMPTargetTeamsDistributeSimdDirective {{.*}} <line:4:1, col:41>
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:5:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <col:3, line:6:5>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:5:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <col:3, line:6:5>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:5:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <col:3, line:6:5>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:5:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <col:3, line:6:5>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:9:1, line:14:1> line:9:6 test_two 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:29, line:14:1>
-// CHECK-NEXT: | `-OMPTargetTeamsDistributeSimdDirective {{.*}} <line:10:1, col:41>
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:11:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:11:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:11:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | |-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
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:16:1, line:21:1> line:16:6 test_three 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:31, line:21:1>
-// CHECK-NEXT: | `-OMPTargetTeamsDistributeSimdDirective {{.*}} <line:17:1, col:53>
-// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:42, col:52>
-// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:51> 'int'
-// CHECK-NEXT: | | |-value: Int 1
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:51> 'int' 1
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:18:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:18:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:18:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | |-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
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:23:1, line:28:1> line:23:6 test_four 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:30, line:28:1>
-// CHECK-NEXT: | `-OMPTargetTeamsDistributeSimdDirective {{.*}} <line:24:1, col:53>
-// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:42, col:52>
-// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:51> 'int'
-// CHECK-NEXT: | | |-value: Int 2
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:51> 'int' 2
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:25:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:26:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:25:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:26:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:25:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:26:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: `-FunctionDecl {{.*}} <line:30:1, line:36:1> line:30:6 test_five 'void (int, int, int)'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
-// CHECK-NEXT: `-CompoundStmt {{.*}} <col:37, line:36:1>
-// CHECK-NEXT: `-OMPTargetTeamsDistributeSimdDirective {{.*}} <line:31:1, col:53>
-// CHECK-NEXT: |-OMPCollapseClause {{.*}} <col:42, col:52>
-// CHECK-NEXT: | `-ConstantExpr {{.*}} <col:51> 'int'
-// CHECK-NEXT: | |-value: Int 2
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:51> 'int' 2
-// CHECK-NEXT: |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: `-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-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
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:31:1) *const restrict'
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:31:1) *const restrict'
-// CHECK-NEXT: | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:32:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:33:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-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
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:31:1) *const restrict'
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:31:1) *const restrict'
-// CHECK-NEXT: | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:32:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:33:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
-// CHECK-NEXT: | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-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
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:31:1) *const restrict'
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:31:1) *const restrict'
-// CHECK-NEXT: | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:32:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:33:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
-// CHECK-NEXT: | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-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
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:31:1) *const restrict'
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:22, line:7:1>
+// CHECK: | `-OMPTargetTeamsDistributeSimdDirective {{.*}} <line:4:1, col:41>
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | `-DeclRefExpr {{.*}} <line:5:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <col:3, line:6:5>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:4:1) *const restrict'
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:4:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:5:23> col:23 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <col:3, line:6:5>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:4:1) *const restrict'
+// CHECK: | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:4:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | `-FieldDecl {{.*}} <line:5:23> col:23 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <col:3, line:6:5>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:4:1) *const restrict'
+// CHECK: | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:4:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | `-FieldDecl {{.*}} <line:5:23> col:23 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <col:3, line:6:5>
+// CHECK: | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:4:1) *const restrict'
+// CHECK: | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:9:1, line:14:1> line:9:6 test_two 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:29, line:14:1>
+// CHECK: | `-OMPTargetTeamsDistributeSimdDirective {{.*}} <line:10:1, col:41>
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:10:1) *const restrict'
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:10:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:11:23> col:23 implicit 'int'
+// CHECK: | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:10:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:10:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:11:23> col:23 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:10:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:10:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:11:23> col:23 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:10:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:16:1, line:21:1> line:16:6 test_three 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:31, line:21:1>
+// CHECK: | `-OMPTargetTeamsDistributeSimdDirective {{.*}} <line:17:1, col:53>
+// CHECK: | |-OMPCollapseClause {{.*}} <col:42, col:52>
+// CHECK: | | `-ConstantExpr {{.*}} <col:51> 'int'
+// CHECK: | | |-value: Int 1
+// CHECK: | | `-IntegerLiteral {{.*}} <col:51> 'int' 1
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:17:1) *const restrict'
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:17:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:18:23> col:23 implicit 'int'
+// CHECK: | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:17:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:17:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:18:23> col:23 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:17:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:17:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:18:23> col:23 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:17:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:23:1, line:28:1> line:23:6 test_four 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:30, line:28:1>
+// CHECK: | `-OMPTargetTeamsDistributeSimdDirective {{.*}} <line:24:1, col:53>
+// CHECK: | |-OMPCollapseClause {{.*}} <col:42, col:52>
+// CHECK: | | `-ConstantExpr {{.*}} <col:51> 'int'
+// CHECK: | | |-value: Int 2
+// CHECK: | | `-IntegerLiteral {{.*}} <col:51> 'int' 2
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:24:1) *const restrict'
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:24:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:25:23> col:23 implicit 'int'
+// CHECK: | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:26:25> col:25 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:24:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:24:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:25:23> col:23 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:26:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:24:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:24:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:25:23> col:23 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:26:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:24:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: `-FunctionDecl {{.*}} <line:30:1, line:36:1> line:30:6 test_five 'void (int, int, int)'
+// CHECK: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
+// CHECK: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
+// CHECK: `-CompoundStmt {{.*}} <col:37, line:36:1>
+// CHECK: `-OMPTargetTeamsDistributeSimdDirective {{.*}} <line:31:1, col:53>
+// CHECK: |-OMPCollapseClause {{.*}} <col:42, col:52>
+// CHECK: | `-ConstantExpr {{.*}} <col:51> 'int'
+// CHECK: | |-value: Int 2
+// CHECK: | `-IntegerLiteral {{.*}} <col:51> 'int' 2
+// CHECK: |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: `-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:31:1) *const restrict'
+// CHECK: | | | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:31:1) *const restrict'
+// CHECK: | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | |-FieldDecl {{.*}} <line:32:23> col:23 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | |-FieldDecl {{.*}} <line:33:25> col:25 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:31:1) *const restrict'
+// CHECK: | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:31:1) *const restrict'
+// CHECK: | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | |-FieldDecl {{.*}} <line:32:23> col:23 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | |-FieldDecl {{.*}} <line:33:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
+// CHECK: | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:31:1) *const restrict'
+// CHECK: | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:31:1) *const restrict'
+// CHECK: | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | |-FieldDecl {{.*}} <line:32:23> col:23 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | |-FieldDecl {{.*}} <line:33:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
+// CHECK: | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute-simd.c:31:1) *const restrict'
+// CHECK: | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
diff --git a/clang/test/AST/ast-dump-openmp-target-teams-distribute.c b/clang/test/AST/ast-dump-openmp-target-teams-distribute.c
index 3f802b3796b26..78dbe10766e0d 100644
--- a/clang/test/AST/ast-dump-openmp-target-teams-distribute.c
+++ b/clang/test/AST/ast-dump-openmp-target-teams-distribute.c
@@ -37,924 +37,924 @@ void test_five(int x, int y, int z) {
// CHECK: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>
// CHECK: |-FunctionDecl {{.*}} <{{.*}}ast-dump-openmp-target-teams-distribute.c:3:1, line:7: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:7:1>
-// CHECK-NEXT: | `-OMPTargetTeamsDistributeDirective {{.*}} <line:4:1, col:36>
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:5:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <col:3, line:6:5>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:5:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <col:3, line:6:5>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:4:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:5:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <col:3, line:6:5>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:4:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:5:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <col:3, line:6:5>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:4:1) *const restrict'
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:9:1, line:14:1> line:9:6 test_two 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:29, line:14:1>
-// CHECK-NEXT: | `-OMPTargetTeamsDistributeDirective {{.*}} <line:10:1, col:36>
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:11:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:10:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:11:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:10:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:10:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:11:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | |-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
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:10:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:16:1, line:21:1> line:16:6 test_three 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:31, line:21:1>
-// CHECK-NEXT: | `-OMPTargetTeamsDistributeDirective {{.*}} <line:17:1, col:48>
-// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:37, col:47>
-// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:46> 'int'
-// CHECK-NEXT: | | |-value: Int 1
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:46> 'int' 1
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:18:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:17:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:18:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:17:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:17:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:18:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | |-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
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:17:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:23:1, line:28:1> line:23:6 test_four 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:30, line:28:1>
-// CHECK-NEXT: | `-OMPTargetTeamsDistributeDirective {{.*}} <line:24:1, col:48>
-// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:37, col:47>
-// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:46> 'int'
-// CHECK-NEXT: | | |-value: Int 2
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:46> 'int' 2
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:25:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:26:5> col:5 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:24:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:25:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:26:5> col:5 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:24:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:24:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:25:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:26:5> col:5 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:24:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: `-FunctionDecl {{.*}} <line:30:1, line:36:1> line:30:6 test_five 'void (int, int, int)'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
-// CHECK-NEXT: `-CompoundStmt {{.*}} <col:37, line:36:1>
-// CHECK-NEXT: `-OMPTargetTeamsDistributeDirective {{.*}} <line:31:1, col:48>
-// CHECK-NEXT: |-OMPCollapseClause {{.*}} <col:37, col:47>
-// CHECK-NEXT: | `-ConstantExpr {{.*}} <col:46> 'int'
-// CHECK-NEXT: | |-value: Int 2
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:46> 'int' 2
-// CHECK-NEXT: |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: `-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-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
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:31:1) *const restrict'
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:31:1) *const restrict'
-// CHECK-NEXT: | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:32:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:33:5> col:5 implicit 'int'
-// CHECK-NEXT: | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-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
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:31:1) *const restrict'
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:31:1) *const restrict'
-// CHECK-NEXT: | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:32:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:33:5> col:5 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
-// CHECK-NEXT: | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-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
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:31:1) *const restrict'
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:31:1) *const restrict'
-// CHECK-NEXT: | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:32:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:33:5> col:5 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
-// CHECK-NEXT: | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-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
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:31:1) *const restrict'
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:22, line:7:1>
+// CHECK: | `-OMPTargetTeamsDistributeDirective {{.*}} <line:4:1, col:36>
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | `-DeclRefExpr {{.*}} <line:5:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <col:3, line:6:5>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:4:1) *const restrict'
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:4:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:5:3> col:3 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <col:3, line:6:5>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:4:1) *const restrict'
+// CHECK: | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:4:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | `-FieldDecl {{.*}} <line:5:3> col:3 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <col:3, line:6:5>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:4:1) *const restrict'
+// CHECK: | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:4:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | `-FieldDecl {{.*}} <line:5:3> col:3 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <col:3, line:6:5>
+// CHECK: | | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:4:1) *const restrict'
+// CHECK: | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:9:1, line:14:1> line:9:6 test_two 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:29, line:14:1>
+// CHECK: | `-OMPTargetTeamsDistributeDirective {{.*}} <line:10:1, col:36>
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:10:1) *const restrict'
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:10:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:11:3> col:3 implicit 'int'
+// CHECK: | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:10:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:10:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:11:3> col:3 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:10:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:10:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:11:3> col:3 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:10:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:16:1, line:21:1> line:16:6 test_three 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:31, line:21:1>
+// CHECK: | `-OMPTargetTeamsDistributeDirective {{.*}} <line:17:1, col:48>
+// CHECK: | |-OMPCollapseClause {{.*}} <col:37, col:47>
+// CHECK: | | `-ConstantExpr {{.*}} <col:46> 'int'
+// CHECK: | | |-value: Int 1
+// CHECK: | | `-IntegerLiteral {{.*}} <col:46> 'int' 1
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:17:1) *const restrict'
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:17:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:18:3> col:3 implicit 'int'
+// CHECK: | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:17:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:17:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:18:3> col:3 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:17:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:17:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:18:3> col:3 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:17:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:23:1, line:28:1> line:23:6 test_four 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:30, line:28:1>
+// CHECK: | `-OMPTargetTeamsDistributeDirective {{.*}} <line:24:1, col:48>
+// CHECK: | |-OMPCollapseClause {{.*}} <col:37, col:47>
+// CHECK: | | `-ConstantExpr {{.*}} <col:46> 'int'
+// CHECK: | | |-value: Int 2
+// CHECK: | | `-IntegerLiteral {{.*}} <col:46> 'int' 2
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:24:1) *const restrict'
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:24:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:25:3> col:3 implicit 'int'
+// CHECK: | | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:26:5> col:5 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:24:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:24:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:25:3> col:3 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:26:5> col:5 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:24:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:24:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:25:3> col:3 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:26:5> col:5 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:24:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: `-FunctionDecl {{.*}} <line:30:1, line:36:1> line:30:6 test_five 'void (int, int, int)'
+// CHECK: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
+// CHECK: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
+// CHECK: `-CompoundStmt {{.*}} <col:37, line:36:1>
+// CHECK: `-OMPTargetTeamsDistributeDirective {{.*}} <line:31:1, col:48>
+// CHECK: |-OMPCollapseClause {{.*}} <col:37, col:47>
+// CHECK: | `-ConstantExpr {{.*}} <col:46> 'int'
+// CHECK: | |-value: Int 2
+// CHECK: | `-IntegerLiteral {{.*}} <col:46> 'int' 2
+// CHECK: |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: `-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:31:1) *const restrict'
+// CHECK: | | | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:31:1) *const restrict'
+// CHECK: | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | |-FieldDecl {{.*}} <line:32:3> col:3 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | |-FieldDecl {{.*}} <line:33:5> col:5 implicit 'int'
+// CHECK: | | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:31:1) *const restrict'
+// CHECK: | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:31:1) *const restrict'
+// CHECK: | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | |-FieldDecl {{.*}} <line:32:3> col:3 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | |-FieldDecl {{.*}} <line:33:5> col:5 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
+// CHECK: | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:31:1) *const restrict'
+// CHECK: | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:31:1) *const restrict'
+// CHECK: | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | |-FieldDecl {{.*}} <line:32:3> col:3 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | |-FieldDecl {{.*}} <line:33:5> col:5 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
+// CHECK: | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-NullStmt {{.*}} <line:35:9>
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams-distribute.c:31:1) *const restrict'
+// CHECK: | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
diff --git a/clang/test/AST/ast-dump-openmp-target-teams.c b/clang/test/AST/ast-dump-openmp-target-teams.c
index a510fdebd52ec..34e8492d1ce09 100644
--- a/clang/test/AST/ast-dump-openmp-target-teams.c
+++ b/clang/test/AST/ast-dump-openmp-target-teams.c
@@ -7,47 +7,47 @@ void test(void) {
// CHECK: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>
// CHECK: `-FunctionDecl {{.*}} <{{.*}}ast-dump-openmp-target-teams.c:3:1, line:6:1> line:3:6 test 'void (void)'
-// CHECK-NEXT: `-CompoundStmt {{.*}} <col:17, line:6:1>
-// CHECK-NEXT: `-OMPTargetTeamsDirective {{.*}} <line:4:1, col:25>
-// CHECK-NEXT: `-CapturedStmt {{.*}} <line:5:3>
-// CHECK-NEXT: `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: |-CapturedStmt {{.*}} <col:3>
-// 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: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams.c:4:1) *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams.c:4:1) *const restrict'
-// CHECK-NEXT: | |-RecordDecl {{.*}} <col:1> col:1 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: | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams.c:4:1) *const restrict'
-// CHECK-NEXT: |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams.c:4:1) *const restrict'
-// CHECK-NEXT: |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | `-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// 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: | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams.c:4:1) *const restrict'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams.c:4:1) *const restrict'
-// CHECK-NEXT: |-RecordDecl {{.*}} <col:1> col:1 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: |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams.c:4:1) *const restrict'
+// CHECK: `-CompoundStmt {{.*}} <col:17, line:6:1>
+// CHECK: `-OMPTargetTeamsDirective {{.*}} <line:4:1, col:25>
+// CHECK: `-CapturedStmt {{.*}} <line:5:3>
+// CHECK: `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: |-CapturedStmt {{.*}} <col:3>
+// CHECK: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-CapturedStmt {{.*}} <col:3>
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-NullStmt {{.*}} <col:3>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams.c:4:1) *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams.c:4:1) *const restrict'
+// CHECK: | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | `-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-NullStmt {{.*}} <line:5:3>
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams.c:4:1) *const restrict'
+// CHECK: |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .global_tid. 'const int'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams.c:4:1) *const restrict'
+// CHECK: |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | `-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: |-CapturedStmt {{.*}} <line:5:3>
+// CHECK: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-NullStmt {{.*}} <col:3>
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams.c:4:1) *const restrict'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams.c:4:1) *const restrict'
+// CHECK: |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | `-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: |-NullStmt {{.*}} <line:5:3>
+// CHECK: |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-teams.c:4:1) *const restrict'
diff --git a/clang/test/AST/ast-dump-openmp-target-update.c b/clang/test/AST/ast-dump-openmp-target-update.c
index 629c62a317a57..1e1bbcdd8a0c2 100644
--- a/clang/test/AST/ast-dump-openmp-target-update.c
+++ b/clang/test/AST/ast-dump-openmp-target-update.c
@@ -7,17 +7,17 @@ void test(int x) {
// CHECK: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>
// 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: `-CompoundStmt {{.*}} <col:18, line:5:1>
// CHECK-NEXT: `-OMPTargetUpdateDirective {{.*}} <line:4:1, 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:1>
// CHECK-NEXT: `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
// CHECK-NEXT: |-CompoundStmt {{.*}} <col:1>
-// CHECK-NEXT: |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK-NEXT: |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-update.c:4:1) *const restrict'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target-update.c:4:1) *const restrict'
diff --git a/clang/test/AST/ast-dump-openmp-target.c b/clang/test/AST/ast-dump-openmp-target.c
index ca33a8259c9cc..a847853ea9342 100644
--- a/clang/test/AST/ast-dump-openmp-target.c
+++ b/clang/test/AST/ast-dump-openmp-target.c
@@ -15,15 +15,15 @@ void test(void) {
// CHECK-NEXT: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
// CHECK-NEXT: | |-NullStmt {{.*}} <col:3>
// CHECK-NEXT: | `-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target.c:4:1) *const restrict'
-// CHECK-NEXT: |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target.c:4:1) *const restrict'
-// CHECK-NEXT: |-RecordDecl {{.*}} <col:1> col:1 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: `-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target.c:4:1) *const restrict'
+// CHECK: |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .global_tid. 'const int'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target.c:4:1) *const restrict'
+// CHECK: |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | `-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: |-NullStmt {{.*}} <line:5:3>
+// CHECK: `-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-target.c:4:1) *const restrict'
diff --git a/clang/test/AST/ast-dump-openmp-task.c b/clang/test/AST/ast-dump-openmp-task.c
index 1945c3cfd3761..166521524dee3 100644
--- a/clang/test/AST/ast-dump-openmp-task.c
+++ b/clang/test/AST/ast-dump-openmp-task.c
@@ -18,10 +18,10 @@ void test(void) {
// CHECK-NEXT: `-CapturedStmt {{.*}} <line:7:3>
// CHECK-NEXT: `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
// CHECK-NEXT: |-NullStmt {{.*}} <col:3>
-// CHECK-NEXT: |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK-NEXT: |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <line:6:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-task.c:6:1) *const restrict'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-task.c:6:1) *const restrict'
diff --git a/clang/test/AST/ast-dump-openmp-taskloop-simd.c b/clang/test/AST/ast-dump-openmp-taskloop-simd.c
index de70ecdefd16a..cd5921f04a589 100644
--- a/clang/test/AST/ast-dump-openmp-taskloop-simd.c
+++ b/clang/test/AST/ast-dump-openmp-taskloop-simd.c
@@ -37,269 +37,269 @@ void test_five(int x, int y, int z) {
// CHECK: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>
// CHECK: |-FunctionDecl {{.*}} <{{.*}}ast-dump-openmp-taskloop-simd.c:3:1, line:7: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:7:1>
-// CHECK-NEXT: | `-OMPTaskLoopSimdDirective {{.*}} <line:4:1, col:26>
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:5:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <col:3, line:6:5>
-// CHECK-NEXT: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-ForStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .lb. 'const unsigned long'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .ub. 'const unsigned long'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .st. 'const long'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .liter. 'const int'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .reductions. 'void *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-taskloop-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:9:1, line:14:1> line:9:6 test_two 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:29, line:14:1>
-// CHECK-NEXT: | `-OMPTaskLoopSimdDirective {{.*}} <line:10:1, col:26>
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-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
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .lb. 'const unsigned long'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .ub. 'const unsigned long'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .st. 'const long'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .liter. 'const int'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .reductions. 'void *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-taskloop-simd.c:10:1) *const restrict'
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:16:1, line:21:1> line:16:6 test_three 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:31, line:21:1>
-// CHECK-NEXT: | `-OMPTaskLoopSimdDirective {{.*}} <line:17:1, col:38>
-// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:27, col:37>
-// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:36> 'int'
-// CHECK-NEXT: | | |-value: Int 1
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:36> 'int' 1
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-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
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .lb. 'const unsigned long'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .ub. 'const unsigned long'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .st. 'const long'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .liter. 'const int'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .reductions. 'void *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-taskloop-simd.c:17:1) *const restrict'
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:23:1, line:28:1> line:23:6 test_four 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:30, line:28:1>
-// CHECK-NEXT: | `-OMPTaskLoopSimdDirective {{.*}} <line:24:1, col:38>
-// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:27, col:37>
-// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:36> 'int'
-// CHECK-NEXT: | | |-value: Int 2
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:36> 'int' 2
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .lb. 'const unsigned long'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .ub. 'const unsigned long'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .st. 'const long'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .liter. 'const int'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .reductions. 'void *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-taskloop-simd.c:24:1) *const restrict'
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: `-FunctionDecl {{.*}} <line:30:1, line:36:1> line:30:6 test_five 'void (int, int, int)'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
-// CHECK-NEXT: `-CompoundStmt {{.*}} <col:37, line:36:1>
-// CHECK-NEXT: `-OMPTaskLoopSimdDirective {{.*}} <line:31:1, col:38>
-// CHECK-NEXT: |-OMPCollapseClause {{.*}} <col:27, col:37>
-// CHECK-NEXT: | `-ConstantExpr {{.*}} <col:36> 'int'
-// CHECK-NEXT: | |-value: Int 2
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:36> 'int' 2
-// CHECK-NEXT: |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: `-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | |-<<<NULL>>>
-// CHECK-NEXT: | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-<<<NULL>>>
-// CHECK-NEXT: | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | |-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
-// CHECK-NEXT: | |-<<<NULL>>>
-// CHECK-NEXT: | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .lb. 'const unsigned long'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .ub. 'const unsigned long'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .st. 'const long'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .liter. 'const int'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .reductions. 'void *const restrict'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-taskloop-simd.c:31:1) *const restrict'
-// CHECK-NEXT: |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: `-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:22, line:7:1>
+// CHECK: | `-OMPTaskLoopSimdDirective {{.*}} <line:4:1, col:26>
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | `-DeclRefExpr {{.*}} <line:5:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <col:3, line:6:5>
+// CHECK: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-ForStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .lb. 'const unsigned long'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .ub. 'const unsigned long'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .st. 'const long'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .liter. 'const int'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .reductions. 'void *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-taskloop-simd.c:4:1) *const restrict'
+// CHECK: | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: |-FunctionDecl {{.*}} <line:9:1, line:14:1> line:9:6 test_two 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:29, line:14:1>
+// CHECK: | `-OMPTaskLoopSimdDirective {{.*}} <line:10:1, col:26>
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .lb. 'const unsigned long'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .ub. 'const unsigned long'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .st. 'const long'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .liter. 'const int'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .reductions. 'void *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-taskloop-simd.c:10:1) *const restrict'
+// CHECK: | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: |-FunctionDecl {{.*}} <line:16:1, line:21:1> line:16:6 test_three 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:31, line:21:1>
+// CHECK: | `-OMPTaskLoopSimdDirective {{.*}} <line:17:1, col:38>
+// CHECK: | |-OMPCollapseClause {{.*}} <col:27, col:37>
+// CHECK: | | `-ConstantExpr {{.*}} <col:36> 'int'
+// CHECK: | | |-value: Int 1
+// CHECK: | | `-IntegerLiteral {{.*}} <col:36> 'int' 1
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .lb. 'const unsigned long'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .ub. 'const unsigned long'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .st. 'const long'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .liter. 'const int'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .reductions. 'void *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-taskloop-simd.c:17:1) *const restrict'
+// CHECK: | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: |-FunctionDecl {{.*}} <line:23:1, line:28:1> line:23:6 test_four 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:30, line:28:1>
+// CHECK: | `-OMPTaskLoopSimdDirective {{.*}} <line:24:1, col:38>
+// CHECK: | |-OMPCollapseClause {{.*}} <col:27, col:37>
+// CHECK: | | `-ConstantExpr {{.*}} <col:36> 'int'
+// CHECK: | | |-value: Int 2
+// CHECK: | | `-IntegerLiteral {{.*}} <col:36> 'int' 2
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .lb. 'const unsigned long'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .ub. 'const unsigned long'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .st. 'const long'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .liter. 'const int'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .reductions. 'void *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-taskloop-simd.c:24:1) *const restrict'
+// CHECK: | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: `-FunctionDecl {{.*}} <line:30:1, line:36:1> line:30:6 test_five 'void (int, int, int)'
+// CHECK: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
+// CHECK: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
+// CHECK: `-CompoundStmt {{.*}} <col:37, line:36:1>
+// CHECK: `-OMPTaskLoopSimdDirective {{.*}} <line:31:1, col:38>
+// CHECK: |-OMPCollapseClause {{.*}} <col:27, col:37>
+// CHECK: | `-ConstantExpr {{.*}} <col:36> 'int'
+// CHECK: | |-value: Int 2
+// CHECK: | `-IntegerLiteral {{.*}} <col:36> 'int' 2
+// CHECK: |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: `-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | |-<<<NULL>>>
+// CHECK: | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-<<<NULL>>>
+// CHECK: | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | |-<<<NULL>>>
+// CHECK: | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | `-NullStmt {{.*}} <line:35:9>
+// CHECK: |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .lb. 'const unsigned long'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .ub. 'const unsigned long'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .st. 'const long'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .liter. 'const int'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .reductions. 'void *const restrict'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-taskloop-simd.c:31:1) *const restrict'
+// CHECK: |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: |-IntegerLiteral {{.*}} <col:20> 'int' 0
diff --git a/clang/test/AST/ast-dump-openmp-taskloop.c b/clang/test/AST/ast-dump-openmp-taskloop.c
index d6a9e2df149fc..599b31ec767c8 100644
--- a/clang/test/AST/ast-dump-openmp-taskloop.c
+++ b/clang/test/AST/ast-dump-openmp-taskloop.c
@@ -37,269 +37,269 @@ void test_five(int x, int y, int z) {
// CHECK: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>
// CHECK: |-FunctionDecl {{.*}} <{{.*}}ast-dump-openmp-taskloop.c:3:1, line:7: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:7:1>
-// CHECK-NEXT: | `-OMPTaskLoopDirective {{.*}} <line:4:1, col:21>
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:5:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <col:3, line:6:5>
-// CHECK-NEXT: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc>
-// CHECK-NEXT: | |-ForStmt {{.*}} <line:5:3, line:6:5>
-// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:5:8, col:17>
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .lb. 'const unsigned long'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .ub. 'const unsigned long'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .st. 'const long'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .liter. 'const int'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .reductions. 'void *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-taskloop.c:4:1) *const restrict'
-// CHECK-NEXT: | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:9:1, line:14:1> line:9:6 test_two 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:29, line:14:1>
-// CHECK-NEXT: | `-OMPTaskLoopDirective {{.*}} <line:10:1, col:21>
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc>
-// CHECK-NEXT: | |-ForStmt {{.*}} <line:11:3, line:13:7>
-// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:11:8, col:17>
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-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
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-NullStmt {{.*}} <line:13:7>
-// CHECK-NEXT: | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .lb. 'const unsigned long'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .ub. 'const unsigned long'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .st. 'const long'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .liter. 'const int'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .reductions. 'void *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-taskloop.c:10:1) *const restrict'
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:16:1, line:21:1> line:16:6 test_three 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:31, line:21:1>
-// CHECK-NEXT: | `-OMPTaskLoopDirective {{.*}} <line:17:1, col:33>
-// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:22, col:32>
-// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:31> 'int'
-// CHECK-NEXT: | | |-value: Int 1
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:31> 'int' 1
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc>
-// CHECK-NEXT: | |-ForStmt {{.*}} <line:18:3, line:20:7>
-// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:18:8, col:17>
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | |-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
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-NullStmt {{.*}} <line:20:7>
-// CHECK-NEXT: | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .lb. 'const unsigned long'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .ub. 'const unsigned long'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .st. 'const long'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .liter. 'const int'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .reductions. 'void *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-taskloop.c:17:1) *const restrict'
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:23:1, line:28:1> line:23:6 test_four 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:30, line:28:1>
-// CHECK-NEXT: | `-OMPTaskLoopDirective {{.*}} <line:24:1, col:33>
-// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:22, col:32>
-// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:31> 'int'
-// CHECK-NEXT: | | |-value: Int 2
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:31> 'int' 2
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc>
-// CHECK-NEXT: | |-ForStmt {{.*}} <line:25:3, line:27:7>
-// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:25:8, col:17>
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-ForStmt {{.*}} <line:26:5, line:27:7>
-// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:26:10, col:19>
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | |-<<<NULL>>>
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .lb. 'const unsigned long'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .ub. 'const unsigned long'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .st. 'const long'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .liter. 'const int'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .reductions. 'void *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-taskloop.c:24:1) *const restrict'
-// CHECK-NEXT: | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: `-FunctionDecl {{.*}} <line:30:1, line:36:1> line:30:6 test_five 'void (int, int, int)'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
-// CHECK-NEXT: `-CompoundStmt {{.*}} <col:37, line:36:1>
-// CHECK-NEXT: `-OMPTaskLoopDirective {{.*}} <line:31:1, col:33>
-// CHECK-NEXT: |-OMPCollapseClause {{.*}} <col:22, col:32>
-// CHECK-NEXT: | `-ConstantExpr {{.*}} <col:31> 'int'
-// CHECK-NEXT: | |-value: Int 2
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:31> 'int' 2
-// CHECK-NEXT: |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: `-CapturedStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc>
-// CHECK-NEXT: |-ForStmt {{.*}} <line:32:3, line:35:9>
-// CHECK-NEXT: | |-DeclStmt {{.*}} <line:32:8, col:17>
-// CHECK-NEXT: | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | |-<<<NULL>>>
-// CHECK-NEXT: | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | `-ForStmt {{.*}} <line:33:5, line:35:9>
-// CHECK-NEXT: | |-DeclStmt {{.*}} <line:33:10, col:19>
-// CHECK-NEXT: | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | |-<<<NULL>>>
-// CHECK-NEXT: | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | |-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
-// CHECK-NEXT: | |-<<<NULL>>>
-// CHECK-NEXT: | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | `-NullStmt {{.*}} <line:35:9>
-// CHECK-NEXT: |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .lb. 'const unsigned long'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .ub. 'const unsigned long'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .st. 'const long'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .liter. 'const int'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .reductions. 'void *const restrict'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-taskloop.c:31:1) *const restrict'
-// CHECK-NEXT: |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: `-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:22, line:7:1>
+// CHECK: | `-OMPTaskLoopDirective {{.*}} <line:4:1, col:21>
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | `-DeclRefExpr {{.*}} <line:5:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <col:3, line:6:5>
+// CHECK: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc>
+// CHECK: | |-ForStmt {{.*}} <line:5:3, line:6:5>
+// CHECK: | | |-DeclStmt {{.*}} <line:5:8, col:17>
+// CHECK: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-NullStmt {{.*}} <line:6:5>
+// CHECK: | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .lb. 'const unsigned long'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .ub. 'const unsigned long'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .st. 'const long'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .liter. 'const int'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .reductions. 'void *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-taskloop.c:4:1) *const restrict'
+// CHECK: | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
+// CHECK: | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: |-FunctionDecl {{.*}} <line:9:1, line:14:1> line:9:6 test_two 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:29, line:14:1>
+// CHECK: | `-OMPTaskLoopDirective {{.*}} <line:10:1, col:21>
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc>
+// CHECK: | |-ForStmt {{.*}} <line:11:3, line:13:7>
+// CHECK: | | |-DeclStmt {{.*}} <line:11:8, col:17>
+// CHECK: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ForStmt {{.*}} <line:12:5, line:13:7>
+// CHECK: | | |-DeclStmt {{.*}} <line:12:10, col:19>
+// CHECK: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-NullStmt {{.*}} <line:13:7>
+// CHECK: | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .lb. 'const unsigned long'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .ub. 'const unsigned long'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .st. 'const long'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .liter. 'const int'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .reductions. 'void *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-taskloop.c:10:1) *const restrict'
+// CHECK: | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
+// CHECK: | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: |-FunctionDecl {{.*}} <line:16:1, line:21:1> line:16:6 test_three 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:31, line:21:1>
+// CHECK: | `-OMPTaskLoopDirective {{.*}} <line:17:1, col:33>
+// CHECK: | |-OMPCollapseClause {{.*}} <col:22, col:32>
+// CHECK: | | `-ConstantExpr {{.*}} <col:31> 'int'
+// CHECK: | | |-value: Int 1
+// CHECK: | | `-IntegerLiteral {{.*}} <col:31> 'int' 1
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc>
+// CHECK: | |-ForStmt {{.*}} <line:18:3, line:20:7>
+// CHECK: | | |-DeclStmt {{.*}} <line:18:8, col:17>
+// CHECK: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ForStmt {{.*}} <line:19:5, line:20:7>
+// CHECK: | | |-DeclStmt {{.*}} <line:19:10, col:19>
+// CHECK: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-NullStmt {{.*}} <line:20:7>
+// CHECK: | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .lb. 'const unsigned long'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .ub. 'const unsigned long'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .st. 'const long'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .liter. 'const int'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .reductions. 'void *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-taskloop.c:17:1) *const restrict'
+// CHECK: | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
+// CHECK: | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: |-FunctionDecl {{.*}} <line:23:1, line:28:1> line:23:6 test_four 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:30, line:28:1>
+// CHECK: | `-OMPTaskLoopDirective {{.*}} <line:24:1, col:33>
+// CHECK: | |-OMPCollapseClause {{.*}} <col:22, col:32>
+// CHECK: | | `-ConstantExpr {{.*}} <col:31> 'int'
+// CHECK: | | |-value: Int 2
+// CHECK: | | `-IntegerLiteral {{.*}} <col:31> 'int' 2
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc>
+// CHECK: | |-ForStmt {{.*}} <line:25:3, line:27:7>
+// CHECK: | | |-DeclStmt {{.*}} <line:25:8, col:17>
+// CHECK: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ForStmt {{.*}} <line:26:5, line:27:7>
+// CHECK: | | |-DeclStmt {{.*}} <line:26:10, col:19>
+// CHECK: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | |-<<<NULL>>>
+// CHECK: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-NullStmt {{.*}} <line:27:7>
+// CHECK: | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .lb. 'const unsigned long'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .ub. 'const unsigned long'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .st. 'const long'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .liter. 'const int'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .reductions. 'void *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-taskloop.c:24:1) *const restrict'
+// CHECK: | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
+// CHECK: | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: `-FunctionDecl {{.*}} <line:30:1, line:36:1> line:30:6 test_five 'void (int, int, int)'
+// CHECK: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
+// CHECK: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
+// CHECK: `-CompoundStmt {{.*}} <col:37, line:36:1>
+// CHECK: `-OMPTaskLoopDirective {{.*}} <line:31:1, col:33>
+// CHECK: |-OMPCollapseClause {{.*}} <col:22, col:32>
+// CHECK: | `-ConstantExpr {{.*}} <col:31> 'int'
+// CHECK: | |-value: Int 2
+// CHECK: | `-IntegerLiteral {{.*}} <col:31> 'int' 2
+// CHECK: |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: `-CapturedStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc>
+// CHECK: |-ForStmt {{.*}} <line:32:3, line:35:9>
+// CHECK: | |-DeclStmt {{.*}} <line:32:8, col:17>
+// CHECK: | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | |-<<<NULL>>>
+// CHECK: | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | `-ForStmt {{.*}} <line:33:5, line:35:9>
+// CHECK: | |-DeclStmt {{.*}} <line:33:10, col:19>
+// CHECK: | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | |-<<<NULL>>>
+// CHECK: | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | `-ForStmt {{.*}} <line:34:7, line:35:9>
+// CHECK: | |-DeclStmt {{.*}} <line:34:12, col:21>
+// CHECK: | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | |-<<<NULL>>>
+// CHECK: | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | `-NullStmt {{.*}} <line:35:9>
+// CHECK: |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .lb. 'const unsigned long'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .ub. 'const unsigned long'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .st. 'const long'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .liter. 'const int'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .reductions. 'void *const restrict'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-taskloop.c:31:1) *const restrict'
+// CHECK: |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
+// CHECK: | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
+// CHECK: | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
+// CHECK: |-IntegerLiteral {{.*}} <col:20> 'int' 0
diff --git a/clang/test/AST/ast-dump-openmp-teams-distribute-parallel-for-simd.c b/clang/test/AST/ast-dump-openmp-teams-distribute-parallel-for-simd.c
index 14356882b599a..7b0266a3e0f1e 100644
--- a/clang/test/AST/ast-dump-openmp-teams-distribute-parallel-for-simd.c
+++ b/clang/test/AST/ast-dump-openmp-teams-distribute-parallel-for-simd.c
@@ -42,2142 +42,2142 @@ void test_five(int x, int y, int z) {
// 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>
-// CHECK-NEXT: | `-OMPTargetDirective {{.*}} <line:4:1, col:19>
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:6:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:5:1, col:47>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <col:1, col:47>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <col:1, col:47>
-// 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>
-// CHECK-NEXT: | | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | | | |-ForStmt {{.*}} <line:6:3, line:7:5>
-// CHECK-NEXT: | | | | | | | | | |-DeclStmt {{.*}} <line:6:8, col:17>
-// CHECK-NEXT: | | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:5:1) *const restrict'
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <line:6:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:5:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | | | `-FieldDecl {{.*}} <line:6:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <col:3, line:7:5>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:6:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:5:1) *const restrict'
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:6:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <line:5:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:6:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-CapturedStmt {{.*}} <col:3, line:7:5>
-// CHECK-NEXT: | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | | |-ForStmt {{.*}} <line:6:3, line:7:5>
-// CHECK-NEXT: | | | | | | | | |-DeclStmt {{.*}} <line:6:8, col:17>
-// CHECK-NEXT: | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:5:1) *const restrict'
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <line:6:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:5:1) *const restrict'
-// CHECK-NEXT: | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | | `-FieldDecl {{.*}} <line:6:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <col:3, line:7:5>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:6:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:5:1) *const restrict'
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:6:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-OMPCapturedExprDecl {{.*}} <col:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-OMPCapturedExprDecl {{.*}} <col:3, <invalid sloc>> col:3 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'int' '-'
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:6:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <line:5:1, col:47>
-// 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>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:6:3, line:7:5>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:6:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:5:1) *const restrict'
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:6:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:5:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:6:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <col:3, line:7:5>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:6:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:5:1) *const restrict'
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:6:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <line:5:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:6:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-CapturedStmt {{.*}} <col:3, line:7:5>
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <line:6:3, line:7:5>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:6:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:5:1) *const restrict'
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:6:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:5:1) *const restrict'
-// CHECK-NEXT: | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | `-FieldDecl {{.*}} <line:6:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-ForStmt {{.*}} <col:3, line:7:5>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:6:8, col:17>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:5:1) *const restrict'
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <line:6:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | |-OMPCapturedExprDecl {{.*}} <col:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-OMPCapturedExprDecl {{.*}} <col:3, <invalid sloc>> col:3 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'int' '-'
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:10:1, line:16:1> line:10:6 test_two 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:29, line:16:1>
-// CHECK-NEXT: | `-OMPTargetDirective {{.*}} <line:11:1, col:19>
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:13:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:12:1, col:47>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <col:1, col:47>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <col:1, col:47>
-// 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>
-// CHECK-NEXT: | | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | | | |-ForStmt {{.*}} <line:13:3, line:15:7>
-// CHECK-NEXT: | | | | | | | | | |-DeclStmt {{.*}} <line:13:8, col:17>
-// CHECK-NEXT: | | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-NullStmt {{.*}} <line:15:7>
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:12:1) *const restrict'
-// CHECK-NEXT: | | | | | | | | |-VarDecl {{.*}} <line:13:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <line:14:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | |-DeclRefExpr {{.*}} <line:13:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:12:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | | | |-FieldDecl {{.*}} <line:13:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | | | | | | `-FieldDecl {{.*}} <line:14:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:13:3, line:15:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:13:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}} <line:15:7>
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:12:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:13:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:14:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:13:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:11:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:11:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <line:12:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:13:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:14:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// 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>
-// CHECK-NEXT: | | | | | | | | |-DeclStmt {{.*}} <line:13:8, col:17>
-// CHECK-NEXT: | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-NullStmt {{.*}} <line:15:7>
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:12:1) *const restrict'
-// CHECK-NEXT: | | | | | | | |-VarDecl {{.*}} <line:13:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <line:14:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | |-DeclRefExpr {{.*}} <line:13:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:12:1) *const restrict'
-// CHECK-NEXT: | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | | |-FieldDecl {{.*}} <line:13:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | | | | | `-FieldDecl {{.*}} <line:14:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <line:13:3, line:15:7>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:13:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-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
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-NullStmt {{.*}} <line:15:7>
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:12:1) *const restrict'
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:13:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:14:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-OMPCapturedExprDecl {{.*}} <line:13:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-OMPCapturedExprDecl {{.*}} <col:3, <invalid sloc>> col:3 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'int' '-'
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:11:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:11:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:13:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:14:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <line:12:1, col:47>
-// 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>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:13:3, line:15:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:13:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}} <line:15:7>
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:12:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:13:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:14:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:13:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:12:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:13:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:14:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:13:3, line:15:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:13:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:15:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:12:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:13:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:14:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:13:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:11:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:11:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <line:12:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:13:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:14:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// 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>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:13:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-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
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-NullStmt {{.*}} <line:15:7>
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:12:1) *const restrict'
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:13:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:14:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:13:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:12:1) *const restrict'
-// CHECK-NEXT: | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:13:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | | | `-FieldDecl {{.*}} <line:14:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-ForStmt {{.*}} <line:13:3, line:15:7>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:13:8, col:17>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-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
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-NullStmt {{.*}} <line:15:7>
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:12:1) *const restrict'
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:13:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <line:14:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | |-OMPCapturedExprDecl {{.*}} <line:13:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-OMPCapturedExprDecl {{.*}} <col:3, <invalid sloc>> col:3 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'int' '-'
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:18:1, line:24:1> line:18:6 test_three 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:31, line:24:1>
-// CHECK-NEXT: | `-OMPTargetDirective {{.*}} <line:19:1, col:19>
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:21:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:20:1, col:59>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <col:1, col:59>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <col:1, col:59>
-// CHECK-NEXT: | | | | | |-OMPCollapseClause {{.*}} <col:48, col:58>
-// CHECK-NEXT: | | | | | | `-ConstantExpr {{.*}} <col:57> 'int'
-// CHECK-NEXT: | | | | | | |-value: Int 1
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:57> 'int' 1
-// CHECK-NEXT: | | | | | `-CapturedStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-CapturedStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | | | |-ForStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | | | | | | | |-DeclStmt {{.*}} <line:21:8, col:17>
-// CHECK-NEXT: | | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-NullStmt {{.*}} <line:23:7>
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:20:1) *const restrict'
-// CHECK-NEXT: | | | | | | | | |-VarDecl {{.*}} <line:21:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <line:22:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | |-DeclRefExpr {{.*}} <line:21:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:20:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | | | |-FieldDecl {{.*}} <line:21:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | | | | | | `-FieldDecl {{.*}} <line:22:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:21:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}} <line:23:7>
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:20:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:21:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:22:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:21:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:19:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:19:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <line:20:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:21:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:22:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-CapturedStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | | |-ForStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | | | | | | |-DeclStmt {{.*}} <line:21:8, col:17>
-// CHECK-NEXT: | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-NullStmt {{.*}} <line:23:7>
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:20:1) *const restrict'
-// CHECK-NEXT: | | | | | | | |-VarDecl {{.*}} <line:21:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <line:22:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | |-DeclRefExpr {{.*}} <line:21:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:20:1) *const restrict'
-// CHECK-NEXT: | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | | |-FieldDecl {{.*}} <line:21:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | | | | | `-FieldDecl {{.*}} <line:22:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:21:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-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
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-NullStmt {{.*}} <line:23:7>
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:20:1) *const restrict'
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:21:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:22:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-OMPCapturedExprDecl {{.*}} <line:21:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-OMPCapturedExprDecl {{.*}} <col:3, <invalid sloc>> col:3 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'int' '-'
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:19:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:19:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:21:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:22:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <line:20:1, col:59>
-// CHECK-NEXT: | | | |-OMPCollapseClause {{.*}} <col:48, col:58>
-// CHECK-NEXT: | | | | `-ConstantExpr {{.*}} <col:57> 'int'
-// CHECK-NEXT: | | | | |-value: Int 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:57> 'int' 1
-// CHECK-NEXT: | | | `-CapturedStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:21:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}} <line:23:7>
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:20:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:21:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:22:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:21:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:20:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:21:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:22:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:21:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:23:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:20:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:21:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:22:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:21:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:19:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:19:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <line:20:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:21:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:22:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-CapturedStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:21:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-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
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-NullStmt {{.*}} <line:23:7>
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:20:1) *const restrict'
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:21:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:22:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:21:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:20:1) *const restrict'
-// CHECK-NEXT: | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:21:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | | | `-FieldDecl {{.*}} <line:22:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-ForStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:21:8, col:17>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-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
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-NullStmt {{.*}} <line:23:7>
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:20:1) *const restrict'
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:21:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <line:22:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | |-OMPCapturedExprDecl {{.*}} <line:21:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-OMPCapturedExprDecl {{.*}} <col:3, <invalid sloc>> col:3 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'int' '-'
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:26:1, line:32:1> line:26:6 test_four 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:30, line:32:1>
-// CHECK-NEXT: | `-OMPTargetDirective {{.*}} <line:27:1, col:19>
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:29:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:30:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:28:1, col:59>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <col:1, col:59>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <col:1, col:59>
-// CHECK-NEXT: | | | | | |-OMPCollapseClause {{.*}} <col:48, col:58>
-// CHECK-NEXT: | | | | | | `-ConstantExpr {{.*}} <col:57> 'int'
-// CHECK-NEXT: | | | | | | |-value: Int 2
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:57> 'int' 2
-// CHECK-NEXT: | | | | | `-CapturedStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-CapturedStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | | | |-ForStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | | | | | | | |-DeclStmt {{.*}} <line:29:8, col:17>
-// CHECK-NEXT: | | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-ForStmt {{.*}} <line:30:5, line:31:7>
-// CHECK-NEXT: | | | | | | | | | |-DeclStmt {{.*}} <line:30:10, col:19>
-// CHECK-NEXT: | | | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:28:1) *const restrict'
-// CHECK-NEXT: | | | | | | | | |-VarDecl {{.*}} <line:29:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <line:30:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | |-DeclRefExpr {{.*}} <line:29:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <line:30:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:28:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | | | |-FieldDecl {{.*}} <line:29:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | | | | | | `-FieldDecl {{.*}} <line:30:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:29:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ForStmt {{.*}} <line:30:5, line:31:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:30:10, col:19>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:28:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:29:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:30:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:29:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:30:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:27:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:27:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <line:28:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:29:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:30:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-CapturedStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | | |-ForStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | | | | | | |-DeclStmt {{.*}} <line:29:8, col:17>
-// CHECK-NEXT: | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ForStmt {{.*}} <line:30:5, line:31:7>
-// CHECK-NEXT: | | | | | | | | |-DeclStmt {{.*}} <line:30:10, col:19>
-// CHECK-NEXT: | | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:28:1) *const restrict'
-// CHECK-NEXT: | | | | | | | |-VarDecl {{.*}} <line:29:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <line:30:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | |-DeclRefExpr {{.*}} <line:29:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <line:30:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:28:1) *const restrict'
-// CHECK-NEXT: | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | | |-FieldDecl {{.*}} <line:29:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | | | | | `-FieldDecl {{.*}} <line:30:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:29:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ForStmt {{.*}} <line:30:5, line:31:7>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:30:10, col:19>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:28:1) *const restrict'
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:29:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:30:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-OMPCapturedExprDecl {{.*}} <line:29:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-OMPCapturedExprDecl {{.*}} <line:30:25> col:25 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-OMPCapturedExprDecl {{.*}} <line:29:3, <invalid sloc>> col:3 implicit used .capture_expr. 'long'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'long' '-'
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:3, line:30:28> 'long' '*'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <line:29:3, col:26> 'long' <IntegralCast>
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <line:30:5, col:28> 'long' <IntegralCast>
-// CHECK-NEXT: | | | | | `-BinaryOperator {{.*}} <col:5, col:28> 'int' '/'
-// CHECK-NEXT: | | | | | |-ParenExpr {{.*}} <col:5> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:25, col:5> 'int' '-'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | | | `-ParenExpr {{.*}} <col:5> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:18, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:18, col:28> 'int' '-'
-// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <<invalid sloc>> 'long' <IntegralCast>
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:29:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:30:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:27:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:27:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:29:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:30:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <line:28:1, col:59>
-// CHECK-NEXT: | | | |-OMPCollapseClause {{.*}} <col:48, col:58>
-// CHECK-NEXT: | | | | `-ConstantExpr {{.*}} <col:57> 'int'
-// CHECK-NEXT: | | | | |-value: Int 2
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:57> 'int' 2
-// CHECK-NEXT: | | | `-CapturedStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:29:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ForStmt {{.*}} <line:30:5, line:31:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:30:10, col:19>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:28:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:29:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:30:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:29:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:30:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:28:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:29:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:30:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:29:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ForStmt {{.*}} <line:30:5, line:31:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:30:10, col:19>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:28:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:29:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:30:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:29:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:30:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:27:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:27:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <line:28:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:29:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:30:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-CapturedStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:29:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ForStmt {{.*}} <line:30:5, line:31:7>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:30:10, col:19>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:28:1) *const restrict'
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:29:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:30:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:29:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <line:30:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:28:1) *const restrict'
-// CHECK-NEXT: | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:29:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | | | `-FieldDecl {{.*}} <line:30:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-ForStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:29:8, col:17>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ForStmt {{.*}} <line:30:5, line:31:7>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:30:10, col:19>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:28:1) *const restrict'
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:29:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <line:30:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | |-OMPCapturedExprDecl {{.*}} <line:29:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-OMPCapturedExprDecl {{.*}} <line:30:25> col:25 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-OMPCapturedExprDecl {{.*}} <line:29:3, <invalid sloc>> col:3 implicit used .capture_expr. 'long'
-// CHECK-NEXT: | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'long' '-'
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:3, line:30:28> 'long' '*'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <line:29:3, col:26> 'long' <IntegralCast>
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <line:30:5, col:28> 'long' <IntegralCast>
-// CHECK-NEXT: | | | `-BinaryOperator {{.*}} <col:5, col:28> 'int' '/'
-// CHECK-NEXT: | | | |-ParenExpr {{.*}} <col:5> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:25, col:5> 'int' '-'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | `-ParenExpr {{.*}} <col:5> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:18, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:18, col:28> 'int' '-'
-// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
-// CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} <<invalid sloc>> 'long' <IntegralCast>
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:29:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:30:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: `-FunctionDecl {{.*}} <line:34:1, line:41:1> line:34:6 test_five 'void (int, int, int)'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
-// CHECK-NEXT: `-CompoundStmt {{.*}} <col:37, line:41:1>
-// CHECK-NEXT: `-OMPTargetDirective {{.*}} <line:35:1, col:19>
-// CHECK-NEXT: |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:37:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:38:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: `-CapturedStmt {{.*}} <line:36:1, col:59>
-// CHECK-NEXT: |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-CapturedStmt {{.*}} <col:1, col:59>
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <col:1, col:59>
-// CHECK-NEXT: | | | | |-OMPCollapseClause {{.*}} <col:48, col:58>
-// CHECK-NEXT: | | | | | `-ConstantExpr {{.*}} <col:57> 'int'
-// CHECK-NEXT: | | | | | |-value: Int 2
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:57> 'int' 2
-// CHECK-NEXT: | | | | `-CapturedStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-CapturedStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | | |-ForStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | | | | | | | |-DeclStmt {{.*}} <line:37:8, col:17>
-// CHECK-NEXT: | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ForStmt {{.*}} <line:38:5, line:40:9>
-// CHECK-NEXT: | | | | | | | | |-DeclStmt {{.*}} <line:38:10, col:19>
-// CHECK-NEXT: | | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-NullStmt {{.*}} <line:40:9>
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:36:1) *const restrict'
-// CHECK-NEXT: | | | | | | | |-VarDecl {{.*}} <line:37:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-VarDecl {{.*}} <line:38:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <line:39:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | | | | | |-DeclRefExpr {{.*}} <line:37:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-DeclRefExpr {{.*}} <line:38:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:36:1) *const restrict'
-// CHECK-NEXT: | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | | |-FieldDecl {{.*}} <line:37:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | | | | | |-FieldDecl {{.*}} <line:38:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | | | | | `-FieldDecl {{.*}} <line:39:27> col:27 implicit 'int &'
-// CHECK-NEXT: | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:37:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ForStmt {{.*}} <line:38:5, line:40:9>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:38:10, col:19>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-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
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-NullStmt {{.*}} <line:40:9>
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:36:1) *const restrict'
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:37:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:38:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:39:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:37:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:38:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:35:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:35:1) *const restrict'
-// CHECK-NEXT: | | | |-RecordDecl {{.*}} <line:36:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:37:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:38:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | | | `-FieldDecl {{.*}} <line:39:27> col:27 implicit 'int &'
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:37:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ForStmt {{.*}} <line:38:5, line:40:9>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:38:10, col:19>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}} <line:40:9>
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:36:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:37:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:38:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:39:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:37:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:38:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:36:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:37:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:38:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:39:27> col:27 implicit 'int &'
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:37:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ForStmt {{.*}} <line:38:5, line:40:9>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:38:10, col:19>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:40:9>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:36:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:37:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:38:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:39:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | | |-OMPCapturedExprDecl {{.*}} <line:37:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-OMPCapturedExprDecl {{.*}} <line:38:25> col:25 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-OMPCapturedExprDecl {{.*}} <line:37:3, <invalid sloc>> col:3 implicit used .capture_expr. 'long'
-// CHECK-NEXT: | | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'long' '-'
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:3, line:38:28> 'long' '*'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <line:37:3, col:26> 'long' <IntegralCast>
-// CHECK-NEXT: | | | | | `-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <line:38:5, col:28> 'long' <IntegralCast>
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:5, col:28> 'int' '/'
-// CHECK-NEXT: | | | | |-ParenExpr {{.*}} <col:5> 'int'
-// CHECK-NEXT: | | | | | `-BinaryOperator {{.*}} <col:25, col:5> 'int' '-'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | | `-ParenExpr {{.*}} <col:5> 'int'
-// CHECK-NEXT: | | | | | `-BinaryOperator {{.*}} <col:18, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:18, col:28> 'int' '-'
-// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <<invalid sloc>> 'long' <IntegralCast>
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:37:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:38:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:35:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:35:1) *const restrict'
-// CHECK-NEXT: | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:37:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:38:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-FieldDecl {{.*}} <line:39:27> col:27 implicit 'int'
-// CHECK-NEXT: | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <line:36:1, col:59>
-// CHECK-NEXT: | | |-OMPCollapseClause {{.*}} <col:48, col:58>
-// CHECK-NEXT: | | | `-ConstantExpr {{.*}} <col:57> 'int'
-// CHECK-NEXT: | | | |-value: Int 2
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:57> 'int' 2
-// CHECK-NEXT: | | `-CapturedStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-CapturedStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:37:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ForStmt {{.*}} <line:38:5, line:40:9>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:38:10, col:19>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-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
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-NullStmt {{.*}} <line:40:9>
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:36:1) *const restrict'
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:37:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:38:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:39:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:37:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:38:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:36:1) *const restrict'
-// CHECK-NEXT: | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:37:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:38:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | | | `-FieldDecl {{.*}} <line:39:27> col:27 implicit 'int &'
-// CHECK-NEXT: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-ForStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:37:8, col:17>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ForStmt {{.*}} <line:38:5, line:40:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:38:10, col:19>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-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
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-NullStmt {{.*}} <line:40:9>
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:36:1) *const restrict'
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:37:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:38:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <line:39:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:37:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:38:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:35:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:35:1) *const restrict'
-// CHECK-NEXT: | |-RecordDecl {{.*}} <line:36:1> col:1 implicit struct definition
-// CHECK-NEXT: | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:37:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:38:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | `-FieldDecl {{.*}} <line:39:27> col:27 implicit 'int &'
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:37:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ForStmt {{.*}} <line:38:5, line:40:9>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:38:10, col:19>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:40:9>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:36:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:37:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:38:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:39:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:37:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:38:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:36:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:37:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:38:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:39:27> col:27 implicit 'int &'
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:37:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ForStmt {{.*}} <line:38:5, line:40:9>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:38:10, col:19>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | |-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
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:40:9>
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:36:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:37:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:38:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:39:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | |-OMPCapturedExprDecl {{.*}} <line:37:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-OMPCapturedExprDecl {{.*}} <line:38:25> col:25 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-OMPCapturedExprDecl {{.*}} <line:37:3, <invalid sloc>> col:3 implicit used .capture_expr. 'long'
-// CHECK-NEXT: | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'long' '-'
-// CHECK-NEXT: | |-BinaryOperator {{.*}} <col:3, line:38:28> 'long' '*'
-// CHECK-NEXT: | | |-ImplicitCastExpr {{.*}} <line:37:3, col:26> 'long' <IntegralCast>
-// CHECK-NEXT: | | | `-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} <line:38:5, col:28> 'long' <IntegralCast>
-// CHECK-NEXT: | | `-BinaryOperator {{.*}} <col:5, col:28> 'int' '/'
-// CHECK-NEXT: | | |-ParenExpr {{.*}} <col:5> 'int'
-// CHECK-NEXT: | | | `-BinaryOperator {{.*}} <col:25, col:5> 'int' '-'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | `-ParenExpr {{.*}} <col:5> 'int'
-// CHECK-NEXT: | | | `-BinaryOperator {{.*}} <col:18, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:18, col:28> 'int' '-'
-// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
-// CHECK-NEXT: | `-ImplicitCastExpr {{.*}} <<invalid sloc>> 'long' <IntegralCast>
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:37:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:38:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:22, line:8:1>
+// CHECK: | `-OMPTargetDirective {{.*}} <line:4:1, col:19>
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | `-DeclRefExpr {{.*}} <line:6:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <line:5:1, col:47>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <col:1, col:47>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <col:1, col:47>
+// CHECK: | | | | | `-CapturedStmt {{.*}} <line:6:3, line:7:5>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-CapturedStmt {{.*}} <line:6:3, line:7:5>
+// CHECK: | | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | | | |-ForStmt {{.*}} <line:6:3, line:7:5>
+// CHECK: | | | | | | | | | |-DeclStmt {{.*}} <line:6:8, col:17>
+// CHECK: | | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | `-NullStmt {{.*}} <line:7:5>
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:5:1) *const restrict'
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <line:6:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:5:1) *const restrict'
+// CHECK: | | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | | | `-FieldDecl {{.*}} <line:6:23> col:23 implicit 'int &'
+// CHECK: | | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <col:3, line:7:5>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:6:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:7:5>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:5:1) *const restrict'
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:6:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:4:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <line:5:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:6:23> col:23 implicit 'int &'
+// CHECK: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | |-CapturedStmt {{.*}} <col:3, line:7:5>
+// CHECK: | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | | |-ForStmt {{.*}} <line:6:3, line:7:5>
+// CHECK: | | | | | | | | |-DeclStmt {{.*}} <line:6:8, col:17>
+// CHECK: | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-NullStmt {{.*}} <line:7:5>
+// CHECK: | | | | | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:5:1) *const restrict'
+// CHECK: | | | | | | | `-VarDecl {{.*}} <line:6:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:5:1) *const restrict'
+// CHECK: | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | | `-FieldDecl {{.*}} <line:6:23> col:23 implicit 'int &'
+// CHECK: | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | |-ForStmt {{.*}} <col:3, line:7:5>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:6:8, col:17>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-NullStmt {{.*}} <line:7:5>
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:5:1) *const restrict'
+// CHECK: | | | | | `-VarDecl {{.*}} <line:6:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | |-OMPCapturedExprDecl {{.*}} <col:23> col:23 implicit used .capture_expr. 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | `-OMPCapturedExprDecl {{.*}} <col:3, <invalid sloc>> col:3 implicit used .capture_expr. 'int'
+// CHECK: | | | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'int' '-'
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
+// CHECK: | | | | | |-ParenExpr {{.*}} <col:3> 'int'
+// CHECK: | | | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
+// CHECK: | | | | | | `-ParenExpr {{.*}} <col:3> 'int'
+// CHECK: | | | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
+// CHECK: | | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
+// CHECK: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:4:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | `-FieldDecl {{.*}} <line:6:23> col:23 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <line:5:1, col:47>
+// CHECK: | | | `-CapturedStmt {{.*}} <line:6:3, line:7:5>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:6:3, line:7:5>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:6:3, line:7:5>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:6:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:7:5>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:5:1) *const restrict'
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:6:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:5:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:6:23> col:23 implicit 'int &'
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <col:3, line:7:5>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:6:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:7:5>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:5:1) *const restrict'
+// CHECK: | | | | `-VarDecl {{.*}} <line:6:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:4:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <line:5:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | `-FieldDecl {{.*}} <line:6:23> col:23 implicit 'int &'
+// CHECK: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-CapturedStmt {{.*}} <col:3, line:7:5>
+// CHECK: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | |-ForStmt {{.*}} <line:6:3, line:7:5>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:6:8, col:17>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-NullStmt {{.*}} <line:7:5>
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:5:1) *const restrict'
+// CHECK: | | | | | `-VarDecl {{.*}} <line:6:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:5:1) *const restrict'
+// CHECK: | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | `-FieldDecl {{.*}} <line:6:23> col:23 implicit 'int &'
+// CHECK: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-ForStmt {{.*}} <col:3, line:7:5>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:6:8, col:17>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-NullStmt {{.*}} <line:7:5>
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:5:1) *const restrict'
+// CHECK: | | | `-VarDecl {{.*}} <line:6:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | |-OMPCapturedExprDecl {{.*}} <col:23> col:23 implicit used .capture_expr. 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-OMPCapturedExprDecl {{.*}} <col:3, <invalid sloc>> col:3 implicit used .capture_expr. 'int'
+// CHECK: | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'int' '-'
+// CHECK: | | |-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
+// CHECK: | | | |-ParenExpr {{.*}} <col:3> 'int'
+// CHECK: | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
+// CHECK: | | | | `-ParenExpr {{.*}} <col:3> 'int'
+// CHECK: | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
+// CHECK: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK: | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
+// CHECK: | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK: | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:10:1, line:16:1> line:10:6 test_two 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:29, line:16:1>
+// CHECK: | `-OMPTargetDirective {{.*}} <line:11:1, col:19>
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | |-DeclRefExpr {{.*}} <line:13:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <line:12:1, col:47>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <col:1, col:47>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <col:1, col:47>
+// CHECK: | | | | | `-CapturedStmt {{.*}} <line:13:3, line:15:7>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-CapturedStmt {{.*}} <line:13:3, line:15:7>
+// CHECK: | | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | | | |-ForStmt {{.*}} <line:13:3, line:15:7>
+// CHECK: | | | | | | | | | |-DeclStmt {{.*}} <line:13:8, col:17>
+// CHECK: | | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | `-ForStmt {{.*}} <line:14:5, line:15:7>
+// CHECK: | | | | | | | | | |-DeclStmt {{.*}} <line:14:10, col:19>
+// CHECK: | | | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | `-NullStmt {{.*}} <line:15:7>
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:12:1) *const restrict'
+// CHECK: | | | | | | | | |-VarDecl {{.*}} <line:13:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <line:14:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-DeclRefExpr {{.*}} <line:13:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:12:1) *const restrict'
+// CHECK: | | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | | | |-FieldDecl {{.*}} <line:13:23> col:23 implicit 'int &'
+// CHECK: | | | | | | | `-FieldDecl {{.*}} <line:14:25> col:25 implicit 'int &'
+// CHECK: | | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:13:3, line:15:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:13:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:14:5, line:15:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:14:10, col:19>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:15:7>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:12:1) *const restrict'
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:13:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:14:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:13:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:11:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:11:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <line:12:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:13:23> col:23 implicit 'int &'
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:14:25> col:25 implicit 'int &'
+// CHECK: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | |-CapturedStmt {{.*}} <line:13:3, line:15:7>
+// CHECK: | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | | |-ForStmt {{.*}} <line:13:3, line:15:7>
+// CHECK: | | | | | | | | |-DeclStmt {{.*}} <line:13:8, col:17>
+// CHECK: | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ForStmt {{.*}} <line:14:5, line:15:7>
+// CHECK: | | | | | | | | |-DeclStmt {{.*}} <line:14:10, col:19>
+// CHECK: | | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-NullStmt {{.*}} <line:15:7>
+// CHECK: | | | | | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:12:1) *const restrict'
+// CHECK: | | | | | | | |-VarDecl {{.*}} <line:13:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | `-VarDecl {{.*}} <line:14:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | |-DeclRefExpr {{.*}} <line:13:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:12:1) *const restrict'
+// CHECK: | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | | |-FieldDecl {{.*}} <line:13:23> col:23 implicit 'int &'
+// CHECK: | | | | | | `-FieldDecl {{.*}} <line:14:25> col:25 implicit 'int &'
+// CHECK: | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | |-ForStmt {{.*}} <line:13:3, line:15:7>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:13:8, col:17>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt {{.*}} <line:14:5, line:15:7>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:14:10, col:19>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-NullStmt {{.*}} <line:15:7>
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:12:1) *const restrict'
+// CHECK: | | | | | |-VarDecl {{.*}} <line:13:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | `-VarDecl {{.*}} <line:14:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | |-OMPCapturedExprDecl {{.*}} <line:13:23> col:23 implicit used .capture_expr. 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | `-OMPCapturedExprDecl {{.*}} <col:3, <invalid sloc>> col:3 implicit used .capture_expr. 'int'
+// CHECK: | | | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'int' '-'
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
+// CHECK: | | | | | |-ParenExpr {{.*}} <col:3> 'int'
+// CHECK: | | | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
+// CHECK: | | | | | | `-ParenExpr {{.*}} <col:3> 'int'
+// CHECK: | | | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
+// CHECK: | | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
+// CHECK: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK: | | | |-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:11:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:11:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:13:23> col:23 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:14:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <line:12:1, col:47>
+// CHECK: | | | `-CapturedStmt {{.*}} <line:13:3, line:15:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:13:3, line:15:7>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:13:3, line:15:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:13:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:14:5, line:15:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:14:10, col:19>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:15:7>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:12:1) *const restrict'
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:13:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:14:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:13:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:12:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:13:23> col:23 implicit 'int &'
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:14:25> col:25 implicit 'int &'
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:13:3, line:15:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:13:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:14:5, line:15:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:14:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:15:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:12:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:13:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:14:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:13:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:11:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:11:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <line:12:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:13:23> col:23 implicit 'int &'
+// CHECK: | | | `-FieldDecl {{.*}} <line:14:25> col:25 implicit 'int &'
+// CHECK: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-CapturedStmt {{.*}} <line:13:3, line:15:7>
+// CHECK: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | |-ForStmt {{.*}} <line:13:3, line:15:7>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:13:8, col:17>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt {{.*}} <line:14:5, line:15:7>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:14:10, col:19>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-NullStmt {{.*}} <line:15:7>
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:12:1) *const restrict'
+// CHECK: | | | | | |-VarDecl {{.*}} <line:13:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | `-VarDecl {{.*}} <line:14:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | |-DeclRefExpr {{.*}} <line:13:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:12:1) *const restrict'
+// CHECK: | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | |-FieldDecl {{.*}} <line:13:23> col:23 implicit 'int &'
+// CHECK: | | | | `-FieldDecl {{.*}} <line:14:25> col:25 implicit 'int &'
+// CHECK: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-ForStmt {{.*}} <line:13:3, line:15:7>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:13:8, col:17>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ForStmt {{.*}} <line:14:5, line:15:7>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:14:10, col:19>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-NullStmt {{.*}} <line:15:7>
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:12:1) *const restrict'
+// CHECK: | | | |-VarDecl {{.*}} <line:13:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | `-VarDecl {{.*}} <line:14:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | |-OMPCapturedExprDecl {{.*}} <line:13:23> col:23 implicit used .capture_expr. 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-OMPCapturedExprDecl {{.*}} <col:3, <invalid sloc>> col:3 implicit used .capture_expr. 'int'
+// CHECK: | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'int' '-'
+// CHECK: | | |-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
+// CHECK: | | | |-ParenExpr {{.*}} <col:3> 'int'
+// CHECK: | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
+// CHECK: | | | | `-ParenExpr {{.*}} <col:3> 'int'
+// CHECK: | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
+// CHECK: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK: | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
+// CHECK: | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK: | |-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:18:1, line:24:1> line:18:6 test_three 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:31, line:24:1>
+// CHECK: | `-OMPTargetDirective {{.*}} <line:19:1, col:19>
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | |-DeclRefExpr {{.*}} <line:21:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <line:20:1, col:59>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <col:1, col:59>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <col:1, col:59>
+// CHECK: | | | | | |-OMPCollapseClause {{.*}} <col:48, col:58>
+// CHECK: | | | | | | `-ConstantExpr {{.*}} <col:57> 'int'
+// CHECK: | | | | | | |-value: Int 1
+// CHECK: | | | | | | `-IntegerLiteral {{.*}} <col:57> 'int' 1
+// CHECK: | | | | | `-CapturedStmt {{.*}} <line:21:3, line:23:7>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-CapturedStmt {{.*}} <line:21:3, line:23:7>
+// CHECK: | | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | | | |-ForStmt {{.*}} <line:21:3, line:23:7>
+// CHECK: | | | | | | | | | |-DeclStmt {{.*}} <line:21:8, col:17>
+// CHECK: | | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | `-ForStmt {{.*}} <line:22:5, line:23:7>
+// CHECK: | | | | | | | | | |-DeclStmt {{.*}} <line:22:10, col:19>
+// CHECK: | | | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | `-NullStmt {{.*}} <line:23:7>
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:20:1) *const restrict'
+// CHECK: | | | | | | | | |-VarDecl {{.*}} <line:21:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <line:22:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-DeclRefExpr {{.*}} <line:21:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:20:1) *const restrict'
+// CHECK: | | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | | | |-FieldDecl {{.*}} <line:21:23> col:23 implicit 'int &'
+// CHECK: | | | | | | | `-FieldDecl {{.*}} <line:22:25> col:25 implicit 'int &'
+// CHECK: | | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:21:3, line:23:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:21:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:22:5, line:23:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:22:10, col:19>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:23:7>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:20:1) *const restrict'
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:21:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:22:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:21:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:19:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:19:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <line:20:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:21:23> col:23 implicit 'int &'
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:22:25> col:25 implicit 'int &'
+// CHECK: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | |-CapturedStmt {{.*}} <line:21:3, line:23:7>
+// CHECK: | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | | |-ForStmt {{.*}} <line:21:3, line:23:7>
+// CHECK: | | | | | | | | |-DeclStmt {{.*}} <line:21:8, col:17>
+// CHECK: | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ForStmt {{.*}} <line:22:5, line:23:7>
+// CHECK: | | | | | | | | |-DeclStmt {{.*}} <line:22:10, col:19>
+// CHECK: | | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-NullStmt {{.*}} <line:23:7>
+// CHECK: | | | | | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:20:1) *const restrict'
+// CHECK: | | | | | | | |-VarDecl {{.*}} <line:21:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | `-VarDecl {{.*}} <line:22:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | |-DeclRefExpr {{.*}} <line:21:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:20:1) *const restrict'
+// CHECK: | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | | |-FieldDecl {{.*}} <line:21:23> col:23 implicit 'int &'
+// CHECK: | | | | | | `-FieldDecl {{.*}} <line:22:25> col:25 implicit 'int &'
+// CHECK: | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | |-ForStmt {{.*}} <line:21:3, line:23:7>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:21:8, col:17>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt {{.*}} <line:22:5, line:23:7>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:22:10, col:19>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-NullStmt {{.*}} <line:23:7>
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:20:1) *const restrict'
+// CHECK: | | | | | |-VarDecl {{.*}} <line:21:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | `-VarDecl {{.*}} <line:22:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | |-OMPCapturedExprDecl {{.*}} <line:21:23> col:23 implicit used .capture_expr. 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | `-OMPCapturedExprDecl {{.*}} <col:3, <invalid sloc>> col:3 implicit used .capture_expr. 'int'
+// CHECK: | | | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'int' '-'
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
+// CHECK: | | | | | |-ParenExpr {{.*}} <col:3> 'int'
+// CHECK: | | | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
+// CHECK: | | | | | | `-ParenExpr {{.*}} <col:3> 'int'
+// CHECK: | | | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
+// CHECK: | | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
+// CHECK: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK: | | | |-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:19:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:19:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:21:23> col:23 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:22:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <line:20:1, col:59>
+// CHECK: | | | |-OMPCollapseClause {{.*}} <col:48, col:58>
+// CHECK: | | | | `-ConstantExpr {{.*}} <col:57> 'int'
+// CHECK: | | | | |-value: Int 1
+// CHECK: | | | | `-IntegerLiteral {{.*}} <col:57> 'int' 1
+// CHECK: | | | `-CapturedStmt {{.*}} <line:21:3, line:23:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:21:3, line:23:7>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:21:3, line:23:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:21:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:22:5, line:23:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:22:10, col:19>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:23:7>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:20:1) *const restrict'
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:21:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:22:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:21:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:20:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:21:23> col:23 implicit 'int &'
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:22:25> col:25 implicit 'int &'
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:21:3, line:23:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:21:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:22:5, line:23:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:22:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:23:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:20:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:21:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:22:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:21:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:19:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:19:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <line:20:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:21:23> col:23 implicit 'int &'
+// CHECK: | | | `-FieldDecl {{.*}} <line:22:25> col:25 implicit 'int &'
+// CHECK: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-CapturedStmt {{.*}} <line:21:3, line:23:7>
+// CHECK: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | |-ForStmt {{.*}} <line:21:3, line:23:7>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:21:8, col:17>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt {{.*}} <line:22:5, line:23:7>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:22:10, col:19>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-NullStmt {{.*}} <line:23:7>
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:20:1) *const restrict'
+// CHECK: | | | | | |-VarDecl {{.*}} <line:21:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | `-VarDecl {{.*}} <line:22:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | |-DeclRefExpr {{.*}} <line:21:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:20:1) *const restrict'
+// CHECK: | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | |-FieldDecl {{.*}} <line:21:23> col:23 implicit 'int &'
+// CHECK: | | | | `-FieldDecl {{.*}} <line:22:25> col:25 implicit 'int &'
+// CHECK: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-ForStmt {{.*}} <line:21:3, line:23:7>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:21:8, col:17>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ForStmt {{.*}} <line:22:5, line:23:7>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:22:10, col:19>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-NullStmt {{.*}} <line:23:7>
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:20:1) *const restrict'
+// CHECK: | | | |-VarDecl {{.*}} <line:21:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | `-VarDecl {{.*}} <line:22:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | |-OMPCapturedExprDecl {{.*}} <line:21:23> col:23 implicit used .capture_expr. 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-OMPCapturedExprDecl {{.*}} <col:3, <invalid sloc>> col:3 implicit used .capture_expr. 'int'
+// CHECK: | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'int' '-'
+// CHECK: | | |-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
+// CHECK: | | | |-ParenExpr {{.*}} <col:3> 'int'
+// CHECK: | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
+// CHECK: | | | | `-ParenExpr {{.*}} <col:3> 'int'
+// CHECK: | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
+// CHECK: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK: | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
+// CHECK: | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK: | |-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: |-FunctionDecl {{.*}} <line:26:1, line:32:1> line:26:6 test_four 'void (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
+// CHECK: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: | `-CompoundStmt {{.*}} <col:30, line:32:1>
+// CHECK: | `-OMPTargetDirective {{.*}} <line:27:1, col:19>
+// CHECK: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | | |-DeclRefExpr {{.*}} <line:29:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:30:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt {{.*}} <line:28:1, col:59>
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <col:1, col:59>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <col:1, col:59>
+// CHECK: | | | | | |-OMPCollapseClause {{.*}} <col:48, col:58>
+// CHECK: | | | | | | `-ConstantExpr {{.*}} <col:57> 'int'
+// CHECK: | | | | | | |-value: Int 2
+// CHECK: | | | | | | `-IntegerLiteral {{.*}} <col:57> 'int' 2
+// CHECK: | | | | | `-CapturedStmt {{.*}} <line:29:3, line:31:7>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-CapturedStmt {{.*}} <line:29:3, line:31:7>
+// CHECK: | | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | | | |-ForStmt {{.*}} <line:29:3, line:31:7>
+// CHECK: | | | | | | | | | |-DeclStmt {{.*}} <line:29:8, col:17>
+// CHECK: | | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | `-ForStmt {{.*}} <line:30:5, line:31:7>
+// CHECK: | | | | | | | | | |-DeclStmt {{.*}} <line:30:10, col:19>
+// CHECK: | | | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | `-NullStmt {{.*}} <line:31:7>
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:28:1) *const restrict'
+// CHECK: | | | | | | | | |-VarDecl {{.*}} <line:29:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <line:30:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-DeclRefExpr {{.*}} <line:29:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <line:30:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:28:1) *const restrict'
+// CHECK: | | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | | | |-FieldDecl {{.*}} <line:29:23> col:23 implicit 'int &'
+// CHECK: | | | | | | | `-FieldDecl {{.*}} <line:30:25> col:25 implicit 'int &'
+// CHECK: | | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:29:3, line:31:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:29:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:30:5, line:31:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:30:10, col:19>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:31:7>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:28:1) *const restrict'
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:29:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:30:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:29:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <line:30:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:27:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:27:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <line:28:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:29:23> col:23 implicit 'int &'
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:30:25> col:25 implicit 'int &'
+// CHECK: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | |-CapturedStmt {{.*}} <line:29:3, line:31:7>
+// CHECK: | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | | |-ForStmt {{.*}} <line:29:3, line:31:7>
+// CHECK: | | | | | | | | |-DeclStmt {{.*}} <line:29:8, col:17>
+// CHECK: | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ForStmt {{.*}} <line:30:5, line:31:7>
+// CHECK: | | | | | | | | |-DeclStmt {{.*}} <line:30:10, col:19>
+// CHECK: | | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-NullStmt {{.*}} <line:31:7>
+// CHECK: | | | | | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:28:1) *const restrict'
+// CHECK: | | | | | | | |-VarDecl {{.*}} <line:29:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | `-VarDecl {{.*}} <line:30:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | |-DeclRefExpr {{.*}} <line:29:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <line:30:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:28:1) *const restrict'
+// CHECK: | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | | |-FieldDecl {{.*}} <line:29:23> col:23 implicit 'int &'
+// CHECK: | | | | | | `-FieldDecl {{.*}} <line:30:25> col:25 implicit 'int &'
+// CHECK: | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | |-ForStmt {{.*}} <line:29:3, line:31:7>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:29:8, col:17>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt {{.*}} <line:30:5, line:31:7>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:30:10, col:19>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-NullStmt {{.*}} <line:31:7>
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:28:1) *const restrict'
+// CHECK: | | | | | |-VarDecl {{.*}} <line:29:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | `-VarDecl {{.*}} <line:30:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | |-OMPCapturedExprDecl {{.*}} <line:29:23> col:23 implicit used .capture_expr. 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-OMPCapturedExprDecl {{.*}} <line:30:25> col:25 implicit used .capture_expr. 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | `-OMPCapturedExprDecl {{.*}} <line:29:3, <invalid sloc>> col:3 implicit used .capture_expr. 'long'
+// CHECK: | | | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'long' '-'
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:3, line:30:28> 'long' '*'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <line:29:3, col:26> 'long' <IntegralCast>
+// CHECK: | | | | | | `-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
+// CHECK: | | | | | | |-ParenExpr {{.*}} <col:3> 'int'
+// CHECK: | | | | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
+// CHECK: | | | | | | | `-ParenExpr {{.*}} <col:3> 'int'
+// CHECK: | | | | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
+// CHECK: | | | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK: | | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <line:30:5, col:28> 'long' <IntegralCast>
+// CHECK: | | | | | `-BinaryOperator {{.*}} <col:5, col:28> 'int' '/'
+// CHECK: | | | | | |-ParenExpr {{.*}} <col:5> 'int'
+// CHECK: | | | | | | `-BinaryOperator {{.*}} <col:25, col:5> 'int' '-'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
+// CHECK: | | | | | | `-ParenExpr {{.*}} <col:5> 'int'
+// CHECK: | | | | | | `-BinaryOperator {{.*}} <col:18, <invalid sloc>> 'int' '+'
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:18, col:28> 'int' '-'
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
+// CHECK: | | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK: | | | | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <<invalid sloc>> 'long' <IntegralCast>
+// CHECK: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:29:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:30:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:27:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:27:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:29:23> col:23 implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | | `-FieldDecl {{.*}} <line:30:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <line:28:1, col:59>
+// CHECK: | | | |-OMPCollapseClause {{.*}} <col:48, col:58>
+// CHECK: | | | | `-ConstantExpr {{.*}} <col:57> 'int'
+// CHECK: | | | | |-value: Int 2
+// CHECK: | | | | `-IntegerLiteral {{.*}} <col:57> 'int' 2
+// CHECK: | | | `-CapturedStmt {{.*}} <line:29:3, line:31:7>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:29:3, line:31:7>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:29:3, line:31:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:29:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:30:5, line:31:7>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:30:10, col:19>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:31:7>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:28:1) *const restrict'
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:29:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:30:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:29:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <line:30:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:28:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:29:23> col:23 implicit 'int &'
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:30:25> col:25 implicit 'int &'
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:29:3, line:31:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:29:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:30:5, line:31:7>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:30:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:31:7>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:28:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:29:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:30:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:29:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:30:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:27:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:27:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <line:28:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:29:23> col:23 implicit 'int &'
+// CHECK: | | | `-FieldDecl {{.*}} <line:30:25> col:25 implicit 'int &'
+// CHECK: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-CapturedStmt {{.*}} <line:29:3, line:31:7>
+// CHECK: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | |-ForStmt {{.*}} <line:29:3, line:31:7>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:29:8, col:17>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt {{.*}} <line:30:5, line:31:7>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:30:10, col:19>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-NullStmt {{.*}} <line:31:7>
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:28:1) *const restrict'
+// CHECK: | | | | | |-VarDecl {{.*}} <line:29:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | `-VarDecl {{.*}} <line:30:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | |-DeclRefExpr {{.*}} <line:29:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | `-DeclRefExpr {{.*}} <line:30:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:28:1) *const restrict'
+// CHECK: | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | |-FieldDecl {{.*}} <line:29:23> col:23 implicit 'int &'
+// CHECK: | | | | `-FieldDecl {{.*}} <line:30:25> col:25 implicit 'int &'
+// CHECK: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-ForStmt {{.*}} <line:29:3, line:31:7>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:29:8, col:17>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ForStmt {{.*}} <line:30:5, line:31:7>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:30:10, col:19>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-NullStmt {{.*}} <line:31:7>
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:28:1) *const restrict'
+// CHECK: | | | |-VarDecl {{.*}} <line:29:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | `-VarDecl {{.*}} <line:30:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | |-OMPCapturedExprDecl {{.*}} <line:29:23> col:23 implicit used .capture_expr. 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-OMPCapturedExprDecl {{.*}} <line:30:25> col:25 implicit used .capture_expr. 'int'
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-OMPCapturedExprDecl {{.*}} <line:29:3, <invalid sloc>> col:3 implicit used .capture_expr. 'long'
+// CHECK: | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'long' '-'
+// CHECK: | | |-BinaryOperator {{.*}} <col:3, line:30:28> 'long' '*'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <line:29:3, col:26> 'long' <IntegralCast>
+// CHECK: | | | | `-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
+// CHECK: | | | | |-ParenExpr {{.*}} <col:3> 'int'
+// CHECK: | | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
+// CHECK: | | | | | `-ParenExpr {{.*}} <col:3> 'int'
+// CHECK: | | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
+// CHECK: | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK: | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <line:30:5, col:28> 'long' <IntegralCast>
+// CHECK: | | | `-BinaryOperator {{.*}} <col:5, col:28> 'int' '/'
+// CHECK: | | | |-ParenExpr {{.*}} <col:5> 'int'
+// CHECK: | | | | `-BinaryOperator {{.*}} <col:25, col:5> 'int' '-'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
+// CHECK: | | | | `-ParenExpr {{.*}} <col:5> 'int'
+// CHECK: | | | | `-BinaryOperator {{.*}} <col:18, <invalid sloc>> 'int' '+'
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:18, col:28> 'int' '-'
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
+// CHECK: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK: | | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
+// CHECK: | | `-ImplicitCastExpr {{.*}} <<invalid sloc>> 'long' <IntegralCast>
+// CHECK: | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK: | |-DeclRefExpr {{.*}} <line:29:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | `-DeclRefExpr {{.*}} <line:30:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: `-FunctionDecl {{.*}} <line:34:1, line:41:1> line:34:6 test_five 'void (int, int, int)'
+// CHECK: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
+// CHECK: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
+// CHECK: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
+// CHECK: `-CompoundStmt {{.*}} <col:37, line:41:1>
+// CHECK: `-OMPTargetDirective {{.*}} <line:35:1, col:19>
+// CHECK: |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK: | |-DeclRefExpr {{.*}} <line:37:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-DeclRefExpr {{.*}} <line:38:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: `-CapturedStmt {{.*}} <line:36:1, col:59>
+// CHECK: |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-CapturedStmt {{.*}} <col:1, col:59>
+// CHECK: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <col:1, col:59>
+// CHECK: | | | | |-OMPCollapseClause {{.*}} <col:48, col:58>
+// CHECK: | | | | | `-ConstantExpr {{.*}} <col:57> 'int'
+// CHECK: | | | | | |-value: Int 2
+// CHECK: | | | | | `-IntegerLiteral {{.*}} <col:57> 'int' 2
+// CHECK: | | | | `-CapturedStmt {{.*}} <line:37:3, line:40:9>
+// CHECK: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | |-CapturedStmt {{.*}} <line:37:3, line:40:9>
+// CHECK: | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | | |-ForStmt {{.*}} <line:37:3, line:40:9>
+// CHECK: | | | | | | | | |-DeclStmt {{.*}} <line:37:8, col:17>
+// CHECK: | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ForStmt {{.*}} <line:38:5, line:40:9>
+// CHECK: | | | | | | | | |-DeclStmt {{.*}} <line:38:10, col:19>
+// CHECK: | | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ForStmt {{.*}} <line:39:7, line:40:9>
+// CHECK: | | | | | | | | |-DeclStmt {{.*}} <line:39:12, col:21>
+// CHECK: | | | | | | | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-NullStmt {{.*}} <line:40:9>
+// CHECK: | | | | | | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:36:1) *const restrict'
+// CHECK: | | | | | | | |-VarDecl {{.*}} <line:37:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-VarDecl {{.*}} <line:38:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | `-VarDecl {{.*}} <line:39:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | | | |-DeclRefExpr {{.*}} <line:37:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-DeclRefExpr {{.*}} <line:38:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:36:1) *const restrict'
+// CHECK: | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | | |-FieldDecl {{.*}} <line:37:23> col:23 implicit 'int &'
+// CHECK: | | | | | | |-FieldDecl {{.*}} <line:38:25> col:25 implicit 'int &'
+// CHECK: | | | | | | `-FieldDecl {{.*}} <line:39:27> col:27 implicit 'int &'
+// CHECK: | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | |-ForStmt {{.*}} <line:37:3, line:40:9>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:37:8, col:17>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt {{.*}} <line:38:5, line:40:9>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:38:10, col:19>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt {{.*}} <line:39:7, line:40:9>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:39:12, col:21>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-NullStmt {{.*}} <line:40:9>
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:36:1) *const restrict'
+// CHECK: | | | | | |-VarDecl {{.*}} <line:37:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-VarDecl {{.*}} <line:38:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | `-VarDecl {{.*}} <line:39:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | |-DeclRefExpr {{.*}} <line:37:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-DeclRefExpr {{.*}} <line:38:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <line:35:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:35:1) *const restrict'
+// CHECK: | | | |-RecordDecl {{.*}} <line:36:1> col:1 implicit struct definition
+// CHECK: | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | |-FieldDecl {{.*}} <line:37:23> col:23 implicit 'int &'
+// CHECK: | | | | |-FieldDecl {{.*}} <line:38:25> col:25 implicit 'int &'
+// CHECK: | | | | `-FieldDecl {{.*}} <line:39:27> col:27 implicit 'int &'
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-CapturedStmt {{.*}} <line:37:3, line:40:9>
+// CHECK: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt {{.*}} <line:37:3, line:40:9>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:37:8, col:17>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:38:5, line:40:9>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:38:10, col:19>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt {{.*}} <line:39:7, line:40:9>
+// CHECK: | | | | | | | |-DeclStmt {{.*}} <line:39:12, col:21>
+// CHECK: | | | | | | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt {{.*}} <line:40:9>
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:36:1) *const restrict'
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:37:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | |-VarDecl {{.*}} <line:38:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | `-VarDecl {{.*}} <line:39:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:37:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-DeclRefExpr {{.*}} <line:38:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:36:1) *const restrict'
+// CHECK: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:37:23> col:23 implicit 'int &'
+// CHECK: | | | | | |-FieldDecl {{.*}} <line:38:25> col:25 implicit 'int &'
+// CHECK: | | | | | `-FieldDecl {{.*}} <line:39:27> col:27 implicit 'int &'
+// CHECK: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:37:3, line:40:9>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:37:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:38:5, line:40:9>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:38:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:39:7, line:40:9>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:39:12, col:21>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:40:9>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:36:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:37:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | |-VarDecl {{.*}} <line:38:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:39:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | |-OMPCapturedExprDecl {{.*}} <line:37:23> col:23 implicit used .capture_expr. 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-OMPCapturedExprDecl {{.*}} <line:38:25> col:25 implicit used .capture_expr. 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-OMPCapturedExprDecl {{.*}} <line:37:3, <invalid sloc>> col:3 implicit used .capture_expr. 'long'
+// CHECK: | | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'long' '-'
+// CHECK: | | | |-BinaryOperator {{.*}} <col:3, line:38:28> 'long' '*'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <line:37:3, col:26> 'long' <IntegralCast>
+// CHECK: | | | | | `-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
+// CHECK: | | | | | |-ParenExpr {{.*}} <col:3> 'int'
+// CHECK: | | | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
+// CHECK: | | | | | | `-ParenExpr {{.*}} <col:3> 'int'
+// CHECK: | | | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
+// CHECK: | | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <line:38:5, col:28> 'long' <IntegralCast>
+// CHECK: | | | | `-BinaryOperator {{.*}} <col:5, col:28> 'int' '/'
+// CHECK: | | | | |-ParenExpr {{.*}} <col:5> 'int'
+// CHECK: | | | | | `-BinaryOperator {{.*}} <col:25, col:5> 'int' '-'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
+// CHECK: | | | | | `-ParenExpr {{.*}} <col:5> 'int'
+// CHECK: | | | | | `-BinaryOperator {{.*}} <col:18, <invalid sloc>> 'int' '+'
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:18, col:28> 'int' '-'
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
+// CHECK: | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK: | | | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
+// CHECK: | | | `-ImplicitCastExpr {{.*}} <<invalid sloc>> 'long' <IntegralCast>
+// CHECK: | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK: | | |-DeclRefExpr {{.*}} <line:37:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-DeclRefExpr {{.*}} <line:38:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:35:1> col:1 implicit .global_tid. 'const int'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:35:1) *const restrict'
+// CHECK: | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | |-FieldDecl {{.*}} <line:37:23> col:23 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | |-FieldDecl {{.*}} <line:38:25> col:25 implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | | `-FieldDecl {{.*}} <line:39:27> col:27 implicit 'int'
+// CHECK: | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
+// CHECK: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-OMPTeamsDistributeParallelForSimdDirective {{.*}} <line:36:1, col:59>
+// CHECK: | | |-OMPCollapseClause {{.*}} <col:48, col:58>
+// CHECK: | | | `-ConstantExpr {{.*}} <col:57> 'int'
+// CHECK: | | | |-value: Int 2
+// CHECK: | | | `-IntegerLiteral {{.*}} <col:57> 'int' 2
+// CHECK: | | `-CapturedStmt {{.*}} <line:37:3, line:40:9>
+// CHECK: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-CapturedStmt {{.*}} <line:37:3, line:40:9>
+// CHECK: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | |-ForStmt {{.*}} <line:37:3, line:40:9>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:37:8, col:17>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt {{.*}} <line:38:5, line:40:9>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:38:10, col:19>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt {{.*}} <line:39:7, line:40:9>
+// CHECK: | | | | | | |-DeclStmt {{.*}} <line:39:12, col:21>
+// CHECK: | | | | | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-NullStmt {{.*}} <line:40:9>
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:36:1) *const restrict'
+// CHECK: | | | | | |-VarDecl {{.*}} <line:37:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-VarDecl {{.*}} <line:38:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | `-VarDecl {{.*}} <line:39:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | |-DeclRefExpr {{.*}} <line:37:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-DeclRefExpr {{.*}} <line:38:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:36:1) *const restrict'
+// CHECK: | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | | |-FieldDecl {{.*}} <line:37:23> col:23 implicit 'int &'
+// CHECK: | | | | |-FieldDecl {{.*}} <line:38:25> col:25 implicit 'int &'
+// CHECK: | | | | `-FieldDecl {{.*}} <line:39:27> col:27 implicit 'int &'
+// CHECK: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-ForStmt {{.*}} <line:37:3, line:40:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:37:8, col:17>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ForStmt {{.*}} <line:38:5, line:40:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:38:10, col:19>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ForStmt {{.*}} <line:39:7, line:40:9>
+// CHECK: | | | | |-DeclStmt {{.*}} <line:39:12, col:21>
+// CHECK: | | | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-NullStmt {{.*}} <line:40:9>
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:36:1) *const restrict'
+// CHECK: | | | |-VarDecl {{.*}} <line:37:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-VarDecl {{.*}} <line:38:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | `-VarDecl {{.*}} <line:39:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | |-DeclRefExpr {{.*}} <line:37:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-DeclRefExpr {{.*}} <line:38:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:35:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:35:1) *const restrict'
+// CHECK: | |-RecordDecl {{.*}} <line:36:1> col:1 implicit struct definition
+// CHECK: | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | |-FieldDecl {{.*}} <line:37:23> col:23 implicit 'int &'
+// CHECK: | | |-FieldDecl {{.*}} <line:38:25> col:25 implicit 'int &'
+// CHECK: | | `-FieldDecl {{.*}} <line:39:27> col:27 implicit 'int &'
+// CHECK: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt {{.*}} <line:37:3, line:40:9>
+// CHECK: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt {{.*}} <line:37:3, line:40:9>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:37:8, col:17>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:38:5, line:40:9>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:38:10, col:19>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt {{.*}} <line:39:7, line:40:9>
+// CHECK: | | | | | |-DeclStmt {{.*}} <line:39:12, col:21>
+// CHECK: | | | | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt {{.*}} <line:40:9>
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:36:1) *const restrict'
+// CHECK: | | | | |-VarDecl {{.*}} <line:37:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | |-VarDecl {{.*}} <line:38:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | `-VarDecl {{.*}} <line:39:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:37:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-DeclRefExpr {{.*}} <line:38:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:36:1) *const restrict'
+// CHECK: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl {{.*}} <line:37:23> col:23 implicit 'int &'
+// CHECK: | | | |-FieldDecl {{.*}} <line:38:25> col:25 implicit 'int &'
+// CHECK: | | | `-FieldDecl {{.*}} <line:39:27> col:27 implicit 'int &'
+// CHECK: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt {{.*}} <line:37:3, line:40:9>
+// CHECK: | | | |-DeclStmt {{.*}} <line:37:8, col:17>
+// CHECK: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:38:5, line:40:9>
+// CHECK: | | | |-DeclStmt {{.*}} <line:38:10, col:19>
+// CHECK: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-ForStmt {{.*}} <line:39:7, line:40:9>
+// CHECK: | | | |-DeclStmt {{.*}} <line:39:12, col:21>
+// CHECK: | | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: | | | `-NullStmt {{.*}} <line:40:9>
+// CHECK: | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for-simd.c:36:1) *const restrict'
+// CHECK: | | |-VarDecl {{.*}} <line:37:8, col:16> col:12 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | |-VarDecl {{.*}} <line:38:10, col:18> col:14 used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | `-VarDecl {{.*}} <line:39:12, col:20> col:16 used i 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:20> 'int' 0
+// CHECK: | |-OMPCapturedExprDecl {{.*}} <line:37:23> col:23 implicit used .capture_expr. 'int'
+// CHECK: | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-OMPCapturedExprDecl {{.*}} <line:38:25> col:25 implicit used .capture_expr. 'int'
+// CHECK: | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-OMPCapturedExprDecl {{.*}} <line:37:3, <invalid sloc>> col:3 implicit used .capture_expr. 'long'
+// CHECK: | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'long' '-'
+// CHECK: | |-BinaryOperator {{.*}} <col:3, line:38:28> 'long' '*'
+// CHECK: | | |-ImplicitCastExpr {{.*}} <line:37:3, col:26> 'long' <IntegralCast>
+// CHECK: | | | `-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
+// CHECK: | | | |-ParenExpr {{.*}} <col:3> 'int'
+// CHECK: | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
+// CHECK: | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
+// CHECK: | | | | `-ParenExpr {{.*}} <col:3> 'int'
+// CHECK: | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
+// CHECK: | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
+// CHECK: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
+// CHECK: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
+// CHECK: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK: | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
+// CHECK: | | `-ImplicitCastExpr {{.*}} <line:38:5, col:28> 'long' <IntegralCast>
+// CHECK: | | `-BinaryOperator {{.*}} <col:5, col:28> 'int' '/'
+// CHECK: | | |-ParenExpr {{.*}} <col:5> 'int'
+// CHECK: | | | `-BinaryOperator {{.*}} <col:25, col:5> 'int' '-'
+// CHECK: | | | |-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
+// CHECK: | | | `-ParenExpr {{.*}} <col:5> 'int'
+// CHECK: | | | `-BinaryOperator {{.*}} <col:18, <invalid sloc>> 'int' '+'
+// CHECK: | | | |-BinaryOperator {{.*}} <col:18, col:28> 'int' '-'
+// CHECK: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
+// CHECK: | | | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
+// CHECK: | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK: | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
+// CHECK: | `-ImplicitCastExpr {{.*}} <<invalid sloc>> 'long' <IntegralCast>
+// CHECK: | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK: |-DeclRefExpr {{.*}} <line:37:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: |-DeclRefExpr {{.*}} <line:38:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
diff --git a/clang/test/AST/ast-dump-openmp-teams-distribute-parallel-for.c b/clang/test/AST/ast-dump-openmp-teams-distribute-parallel-for.c
index 0f983cfdff1dc..ce41d718e3333 100644
--- a/clang/test/AST/ast-dump-openmp-teams-distribute-parallel-for.c
+++ b/clang/test/AST/ast-dump-openmp-teams-distribute-parallel-for.c
@@ -1,2183 +1,3862 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -fopenmp -ast-dump %s | FileCheck --match-full-lines -implicit-check-not=openmp_structured_block %s
-
-void test_one(int x) {
-#pragma omp target
-#pragma omp teams distribute parallel for
- for (int i = 0; i < x; i++)
- ;
-}
-
-void test_two(int x, int y) {
-#pragma omp target
-#pragma omp teams distribute parallel for
- for (int i = 0; i < x; i++)
- for (int i = 0; i < y; i++)
- ;
-}
-
-void test_three(int x, int y) {
-#pragma omp target
-#pragma omp teams distribute parallel for collapse(1)
- for (int i = 0; i < x; i++)
- for (int i = 0; i < y; i++)
- ;
-}
-
-void test_four(int x, int y) {
-#pragma omp target
-#pragma omp teams distribute parallel for collapse(2)
- for (int i = 0; i < x; i++)
- for (int i = 0; i < y; i++)
- ;
-}
-
-void test_five(int x, int y, int z) {
-#pragma omp target
-#pragma omp teams distribute parallel for collapse(2)
- for (int i = 0; i < x; i++)
- for (int i = 0; i < y; i++)
- for (int i = 0; i < z; i++)
- ;
-}
-
-// CHECK: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>
-// CHECK: |-FunctionDecl {{.*}} <{{.*}}ast-dump-openmp-teams-distribute-parallel-for.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>
-// CHECK-NEXT: | `-OMPTargetDirective {{.*}} <line:4:1, col:19>
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:6:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:5:1, col:42>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <col:1, col:42>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-OMPTeamsDistributeParallelForDirective {{.*}} <col:1, col:42>
-// 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>
-// CHECK-NEXT: | | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | | | |-ForStmt {{.*}} <line:6:3, line:7:5>
-// CHECK-NEXT: | | | | | | | | | |-DeclStmt {{.*}} <line:6:8, col:17>
-// CHECK-NEXT: | | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:5:1) *const restrict'
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <line:6:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:5:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | | | `-FieldDecl {{.*}} <line:6:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <col:3, line:7:5>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:6:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:5:1) *const restrict'
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:6:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <line:5:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:6:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-CapturedStmt {{.*}} <col:3, line:7:5>
-// CHECK-NEXT: | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | | |-ForStmt {{.*}} <line:6:3, line:7:5>
-// CHECK-NEXT: | | | | | | | | |-DeclStmt {{.*}} <line:6:8, col:17>
-// CHECK-NEXT: | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:5:1) *const restrict'
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <line:6:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:5:1) *const restrict'
-// CHECK-NEXT: | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | | `-FieldDecl {{.*}} <line:6:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <col:3, line:7:5>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:6:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:5:1) *const restrict'
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:6:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-OMPCapturedExprDecl {{.*}} <col:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-OMPCapturedExprDecl {{.*}} <col:3, <invalid sloc>> col:3 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'int' '-'
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:4:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:6:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-OMPTeamsDistributeParallelForDirective {{.*}} <line:5:1, col:42>
-// 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>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:6:3, line:7:5>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:6:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:5:1) *const restrict'
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:6:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:5:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:6:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <col:3, line:7:5>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:6:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:5:1) *const restrict'
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:6:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:4:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <line:5:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:6:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-CapturedStmt {{.*}} <col:3, line:7:5>
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <line:6:3, line:7:5>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:6:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:5:1) *const restrict'
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:6:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:5:1) *const restrict'
-// CHECK-NEXT: | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | `-FieldDecl {{.*}} <line:6:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-ForStmt {{.*}} <col:3, line:7:5>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:6:8, col:17>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:5:1) *const restrict'
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <line:6:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | |-OMPCapturedExprDecl {{.*}} <col:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-OMPCapturedExprDecl {{.*}} <col:3, <invalid sloc>> col:3 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'int' '-'
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:10:1, line:16:1> line:10:6 test_two 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:29, line:16:1>
-// CHECK-NEXT: | `-OMPTargetDirective {{.*}} <line:11:1, col:19>
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:13:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:12:1, col:42>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <col:1, col:42>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-OMPTeamsDistributeParallelForDirective {{.*}} <col:1, col:42>
-// 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>
-// CHECK-NEXT: | | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | | | |-ForStmt {{.*}} <line:13:3, line:15:7>
-// CHECK-NEXT: | | | | | | | | | |-DeclStmt {{.*}} <line:13:8, col:17>
-// CHECK-NEXT: | | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-NullStmt {{.*}} <line:15:7>
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:12:1) *const restrict'
-// CHECK-NEXT: | | | | | | | | |-VarDecl {{.*}} <line:13:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <line:14:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | |-DeclRefExpr {{.*}} <line:13:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:12:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | | | |-FieldDecl {{.*}} <line:13:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | | | | | | `-FieldDecl {{.*}} <line:14:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:13:3, line:15:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:13:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}} <line:15:7>
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:12:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:13:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:14:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:13:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:11:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:11:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <line:12:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:13:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:14:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// 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>
-// CHECK-NEXT: | | | | | | | | |-DeclStmt {{.*}} <line:13:8, col:17>
-// CHECK-NEXT: | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-NullStmt {{.*}} <line:15:7>
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:12:1) *const restrict'
-// CHECK-NEXT: | | | | | | | |-VarDecl {{.*}} <line:13:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <line:14:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | |-DeclRefExpr {{.*}} <line:13:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:12:1) *const restrict'
-// CHECK-NEXT: | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | | |-FieldDecl {{.*}} <line:13:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | | | | | `-FieldDecl {{.*}} <line:14:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <line:13:3, line:15:7>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:13:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-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
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-NullStmt {{.*}} <line:15:7>
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:12:1) *const restrict'
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:13:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:14:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-OMPCapturedExprDecl {{.*}} <line:13:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-OMPCapturedExprDecl {{.*}} <col:3, <invalid sloc>> col:3 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'int' '-'
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:11:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:11:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:13:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:14:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-OMPTeamsDistributeParallelForDirective {{.*}} <line:12:1, col:42>
-// 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>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:13:3, line:15:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:13:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}} <line:15:7>
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:12:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:13:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:14:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:13:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:12:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:13:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:14:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:13:3, line:15:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:13:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:15:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:12:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:13:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:14:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:13:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:11:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:11:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <line:12:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:13:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:14:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// 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>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:13:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-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
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-NullStmt {{.*}} <line:15:7>
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:12:1) *const restrict'
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:13:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:14:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:13:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:12:1) *const restrict'
-// CHECK-NEXT: | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:13:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | | | `-FieldDecl {{.*}} <line:14:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-ForStmt {{.*}} <line:13:3, line:15:7>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:13:8, col:17>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-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
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-NullStmt {{.*}} <line:15:7>
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:12:1) *const restrict'
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:13:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <line:14:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | |-OMPCapturedExprDecl {{.*}} <line:13:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-OMPCapturedExprDecl {{.*}} <col:3, <invalid sloc>> col:3 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'int' '-'
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:18:1, line:24:1> line:18:6 test_three 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:31, line:24:1>
-// CHECK-NEXT: | `-OMPTargetDirective {{.*}} <line:19:1, col:19>
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:21:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:20:1, col:54>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <col:1, col:54>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-OMPTeamsDistributeParallelForDirective {{.*}} <col:1, col:54>
-// CHECK-NEXT: | | | | | |-OMPCollapseClause {{.*}} <col:43, col:53>
-// CHECK-NEXT: | | | | | | `-ConstantExpr {{.*}} <col:52> 'int'
-// CHECK-NEXT: | | | | | | |-value: Int 1
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:52> 'int' 1
-// CHECK-NEXT: | | | | | `-CapturedStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-CapturedStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | | | |-ForStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | | | | | | | |-DeclStmt {{.*}} <line:21:8, col:17>
-// CHECK-NEXT: | | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-NullStmt {{.*}} <line:23:7>
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:20:1) *const restrict'
-// CHECK-NEXT: | | | | | | | | |-VarDecl {{.*}} <line:21:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <line:22:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | |-DeclRefExpr {{.*}} <line:21:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:20:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | | | |-FieldDecl {{.*}} <line:21:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | | | | | | `-FieldDecl {{.*}} <line:22:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:21:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}} <line:23:7>
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:20:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:21:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:22:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:21:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:19:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:19:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <line:20:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:21:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:22:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-CapturedStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | | |-ForStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | | | | | | |-DeclStmt {{.*}} <line:21:8, col:17>
-// CHECK-NEXT: | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-NullStmt {{.*}} <line:23:7>
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:20:1) *const restrict'
-// CHECK-NEXT: | | | | | | | |-VarDecl {{.*}} <line:21:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <line:22:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | |-DeclRefExpr {{.*}} <line:21:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:20:1) *const restrict'
-// CHECK-NEXT: | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | | |-FieldDecl {{.*}} <line:21:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | | | | | `-FieldDecl {{.*}} <line:22:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:21:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-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
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-NullStmt {{.*}} <line:23:7>
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:20:1) *const restrict'
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:21:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:22:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-OMPCapturedExprDecl {{.*}} <line:21:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-OMPCapturedExprDecl {{.*}} <col:3, <invalid sloc>> col:3 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'int' '-'
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:19:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:19:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:21:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:22:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-OMPTeamsDistributeParallelForDirective {{.*}} <line:20:1, col:54>
-// CHECK-NEXT: | | | |-OMPCollapseClause {{.*}} <col:43, col:53>
-// CHECK-NEXT: | | | | `-ConstantExpr {{.*}} <col:52> 'int'
-// CHECK-NEXT: | | | | |-value: Int 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:52> 'int' 1
-// CHECK-NEXT: | | | `-CapturedStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:21:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}} <line:23:7>
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:20:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:21:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:22:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:21:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:20:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:21:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:22:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:21:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:23:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:20:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:21:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:22:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:21:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:19:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:19:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <line:20:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:21:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:22:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-CapturedStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:21:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-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
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-NullStmt {{.*}} <line:23:7>
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:20:1) *const restrict'
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:21:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:22:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:21:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:20:1) *const restrict'
-// CHECK-NEXT: | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:21:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | | | `-FieldDecl {{.*}} <line:22:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-ForStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:21:8, col:17>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-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
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-NullStmt {{.*}} <line:23:7>
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:20:1) *const restrict'
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:21:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <line:22:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | |-OMPCapturedExprDecl {{.*}} <line:21:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-OMPCapturedExprDecl {{.*}} <col:3, <invalid sloc>> col:3 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'int' '-'
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:26:1, line:32:1> line:26:6 test_four 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:30, line:32:1>
-// CHECK-NEXT: | `-OMPTargetDirective {{.*}} <line:27:1, col:19>
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:29:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:30:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:28:1, col:54>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <col:1, col:54>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-OMPTeamsDistributeParallelForDirective {{.*}} <col:1, col:54>
-// CHECK-NEXT: | | | | | |-OMPCollapseClause {{.*}} <col:43, col:53>
-// CHECK-NEXT: | | | | | | `-ConstantExpr {{.*}} <col:52> 'int'
-// CHECK-NEXT: | | | | | | |-value: Int 2
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:52> 'int' 2
-// CHECK-NEXT: | | | | | `-CapturedStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-CapturedStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | | | |-ForStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | | | | | | | |-DeclStmt {{.*}} <line:29:8, col:17>
-// CHECK-NEXT: | | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-ForStmt {{.*}} <line:30:5, line:31:7>
-// CHECK-NEXT: | | | | | | | | | |-DeclStmt {{.*}} <line:30:10, col:19>
-// CHECK-NEXT: | | | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:28:1) *const restrict'
-// CHECK-NEXT: | | | | | | | | |-VarDecl {{.*}} <line:29:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <line:30:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | |-DeclRefExpr {{.*}} <line:29:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <line:30:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:28:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | | | |-FieldDecl {{.*}} <line:29:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | | | | | | `-FieldDecl {{.*}} <line:30:5> col:5 implicit 'int &'
-// CHECK-NEXT: | | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:29:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ForStmt {{.*}} <line:30:5, line:31:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:30:10, col:19>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:28:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:29:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:30:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:29:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:30:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:27:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:27:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <line:28:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:29:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:30:5> col:5 implicit 'int &'
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-CapturedStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | | |-ForStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | | | | | | |-DeclStmt {{.*}} <line:29:8, col:17>
-// CHECK-NEXT: | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ForStmt {{.*}} <line:30:5, line:31:7>
-// CHECK-NEXT: | | | | | | | | |-DeclStmt {{.*}} <line:30:10, col:19>
-// CHECK-NEXT: | | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:28:1) *const restrict'
-// CHECK-NEXT: | | | | | | | |-VarDecl {{.*}} <line:29:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <line:30:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | |-DeclRefExpr {{.*}} <line:29:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <line:30:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:28:1) *const restrict'
-// CHECK-NEXT: | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | | |-FieldDecl {{.*}} <line:29:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | | | | | `-FieldDecl {{.*}} <line:30:5> col:5 implicit 'int &'
-// CHECK-NEXT: | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:29:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ForStmt {{.*}} <line:30:5, line:31:7>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:30:10, col:19>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:28:1) *const restrict'
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:29:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:30:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-OMPCapturedExprDecl {{.*}} <line:29:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-OMPCapturedExprDecl {{.*}} <line:30:25> col:25 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-OMPCapturedExprDecl {{.*}} <line:29:3, <invalid sloc>> col:3 implicit used .capture_expr. 'long'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'long' '-'
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:3, line:30:28> 'long' '*'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <line:29:3, col:26> 'long' <IntegralCast>
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <line:30:5, col:28> 'long' <IntegralCast>
-// CHECK-NEXT: | | | | | `-BinaryOperator {{.*}} <col:5, col:28> 'int' '/'
-// CHECK-NEXT: | | | | | |-ParenExpr {{.*}} <col:5> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:25, col:5> 'int' '-'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | | | `-ParenExpr {{.*}} <col:5> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:18, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:18, col:28> 'int' '-'
-// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <<invalid sloc>> 'long' <IntegralCast>
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:29:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:30:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:27:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:27:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:29:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:30:5> col:5 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-OMPTeamsDistributeParallelForDirective {{.*}} <line:28:1, col:54>
-// CHECK-NEXT: | | | |-OMPCollapseClause {{.*}} <col:43, col:53>
-// CHECK-NEXT: | | | | `-ConstantExpr {{.*}} <col:52> 'int'
-// CHECK-NEXT: | | | | |-value: Int 2
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:52> 'int' 2
-// CHECK-NEXT: | | | `-CapturedStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:29:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ForStmt {{.*}} <line:30:5, line:31:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:30:10, col:19>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:28:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:29:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:30:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:29:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:30:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:28:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:29:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:30:5> col:5 implicit 'int &'
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:29:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ForStmt {{.*}} <line:30:5, line:31:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:30:10, col:19>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:28:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:29:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:30:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:29:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:30:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:27:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:27:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <line:28:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:29:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:30:5> col:5 implicit 'int &'
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-CapturedStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:29:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ForStmt {{.*}} <line:30:5, line:31:7>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:30:10, col:19>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:28:1) *const restrict'
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:29:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:30:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:29:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <line:30:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:28:1) *const restrict'
-// CHECK-NEXT: | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:29:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | | | `-FieldDecl {{.*}} <line:30:5> col:5 implicit 'int &'
-// CHECK-NEXT: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-ForStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:29:8, col:17>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ForStmt {{.*}} <line:30:5, line:31:7>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:30:10, col:19>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:28:1) *const restrict'
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:29:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <line:30:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | |-OMPCapturedExprDecl {{.*}} <line:29:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-OMPCapturedExprDecl {{.*}} <line:30:25> col:25 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-OMPCapturedExprDecl {{.*}} <line:29:3, <invalid sloc>> col:3 implicit used .capture_expr. 'long'
-// CHECK-NEXT: | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'long' '-'
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:3, line:30:28> 'long' '*'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <line:29:3, col:26> 'long' <IntegralCast>
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <line:30:5, col:28> 'long' <IntegralCast>
-// CHECK-NEXT: | | | `-BinaryOperator {{.*}} <col:5, col:28> 'int' '/'
-// CHECK-NEXT: | | | |-ParenExpr {{.*}} <col:5> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:25, col:5> 'int' '-'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | `-ParenExpr {{.*}} <col:5> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:18, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:18, col:28> 'int' '-'
-// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
-// CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} <<invalid sloc>> 'long' <IntegralCast>
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:29:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:30:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: `-FunctionDecl {{.*}} <line:34:1, line:41:1> line:34:6 test_five 'void (int, int, int)'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
-// CHECK-NEXT: `-CompoundStmt {{.*}} <col:37, line:41:1>
-// CHECK-NEXT: `-OMPTargetDirective {{.*}} <line:35:1, col:19>
-// CHECK-NEXT: |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:37:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:38:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: `-CapturedStmt {{.*}} <line:36:1, col:54>
-// CHECK-NEXT: |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-CapturedStmt {{.*}} <col:1, col:54>
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-OMPTeamsDistributeParallelForDirective {{.*}} <col:1, col:54>
-// CHECK-NEXT: | | | | |-OMPCollapseClause {{.*}} <col:43, col:53>
-// CHECK-NEXT: | | | | | `-ConstantExpr {{.*}} <col:52> 'int'
-// CHECK-NEXT: | | | | | |-value: Int 2
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:52> 'int' 2
-// CHECK-NEXT: | | | | `-CapturedStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-CapturedStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | | |-ForStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | | | | | | | |-DeclStmt {{.*}} <line:37:8, col:17>
-// CHECK-NEXT: | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ForStmt {{.*}} <line:38:5, line:40:9>
-// CHECK-NEXT: | | | | | | | | |-DeclStmt {{.*}} <line:38:10, col:19>
-// CHECK-NEXT: | | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-NullStmt {{.*}} <line:40:9>
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:36:1) *const restrict'
-// CHECK-NEXT: | | | | | | | |-VarDecl {{.*}} <line:37:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-VarDecl {{.*}} <line:38:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <line:39:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | | | | | |-DeclRefExpr {{.*}} <line:37:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-DeclRefExpr {{.*}} <line:38:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:36:1) *const restrict'
-// CHECK-NEXT: | | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | | |-FieldDecl {{.*}} <line:37:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | | | | | |-FieldDecl {{.*}} <line:38:5> col:5 implicit 'int &'
-// CHECK-NEXT: | | | | | | `-FieldDecl {{.*}} <line:39:27> col:27 implicit 'int &'
-// CHECK-NEXT: | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:37:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ForStmt {{.*}} <line:38:5, line:40:9>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:38:10, col:19>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-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
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-NullStmt {{.*}} <line:40:9>
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:36:1) *const restrict'
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:37:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:38:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:39:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:37:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:38:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:35:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:35:1) *const restrict'
-// CHECK-NEXT: | | | |-RecordDecl {{.*}} <line:36:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:37:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:38:5> col:5 implicit 'int &'
-// CHECK-NEXT: | | | | `-FieldDecl {{.*}} <line:39:27> col:27 implicit 'int &'
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-CapturedStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:37:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ForStmt {{.*}} <line:38:5, line:40:9>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:38:10, col:19>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}} <line:40:9>
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:36:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:37:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:38:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:39:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:37:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:38:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:36:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:37:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:38:5> col:5 implicit 'int &'
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:39:27> col:27 implicit 'int &'
-// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:37:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ForStmt {{.*}} <line:38:5, line:40:9>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:38:10, col:19>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:40:9>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:36:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:37:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:38:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:39:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | | |-OMPCapturedExprDecl {{.*}} <line:37:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-OMPCapturedExprDecl {{.*}} <line:38:25> col:25 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-OMPCapturedExprDecl {{.*}} <line:37:3, <invalid sloc>> col:3 implicit used .capture_expr. 'long'
-// CHECK-NEXT: | | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'long' '-'
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:3, line:38:28> 'long' '*'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <line:37:3, col:26> 'long' <IntegralCast>
-// CHECK-NEXT: | | | | | `-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <line:38:5, col:28> 'long' <IntegralCast>
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:5, col:28> 'int' '/'
-// CHECK-NEXT: | | | | |-ParenExpr {{.*}} <col:5> 'int'
-// CHECK-NEXT: | | | | | `-BinaryOperator {{.*}} <col:25, col:5> 'int' '-'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | | `-ParenExpr {{.*}} <col:5> 'int'
-// CHECK-NEXT: | | | | | `-BinaryOperator {{.*}} <col:18, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:18, col:28> 'int' '-'
-// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <<invalid sloc>> 'long' <IntegralCast>
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:37:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:38:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:35:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:35:1) *const restrict'
-// CHECK-NEXT: | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:37:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:38:5> col:5 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-FieldDecl {{.*}} <line:39:27> col:27 implicit 'int'
-// CHECK-NEXT: | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-OMPTeamsDistributeParallelForDirective {{.*}} <line:36:1, col:54>
-// CHECK-NEXT: | | |-OMPCollapseClause {{.*}} <col:43, col:53>
-// CHECK-NEXT: | | | `-ConstantExpr {{.*}} <col:52> 'int'
-// CHECK-NEXT: | | | |-value: Int 2
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:52> 'int' 2
-// CHECK-NEXT: | | `-CapturedStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-CapturedStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:37:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ForStmt {{.*}} <line:38:5, line:40:9>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:38:10, col:19>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-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
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-NullStmt {{.*}} <line:40:9>
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:36:1) *const restrict'
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:37:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:38:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:39:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:37:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:38:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:36:1) *const restrict'
-// CHECK-NEXT: | | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:37:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:38:5> col:5 implicit 'int &'
-// CHECK-NEXT: | | | | `-FieldDecl {{.*}} <line:39:27> col:27 implicit 'int &'
-// CHECK-NEXT: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-ForStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:37:8, col:17>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ForStmt {{.*}} <line:38:5, line:40:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:38:10, col:19>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-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
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-NullStmt {{.*}} <line:40:9>
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:36:1) *const restrict'
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:37:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:38:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <line:39:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:37:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:38:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:35:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:35:1) *const restrict'
-// CHECK-NEXT: | |-RecordDecl {{.*}} <line:36:1> col:1 implicit struct definition
-// CHECK-NEXT: | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:37:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:38:5> col:5 implicit 'int &'
-// CHECK-NEXT: | | `-FieldDecl {{.*}} <line:39:27> col:27 implicit 'int &'
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:37:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ForStmt {{.*}} <line:38:5, line:40:9>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:38:10, col:19>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:40:9>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:36:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:37:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:38:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:39:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:37:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:38:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:36:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:37:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:38:5> col:5 implicit 'int &'
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:39:27> col:27 implicit 'int &'
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:37:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ForStmt {{.*}} <line:38:5, line:40:9>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:38:10, col:19>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | |-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
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:40:9>
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const unsigned long'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const unsigned long'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-parallel-for.c:36:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:37:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:38:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:39:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | |-OMPCapturedExprDecl {{.*}} <line:37:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-OMPCapturedExprDecl {{.*}} <line:38:25> col:25 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-OMPCapturedExprDecl {{.*}} <line:37:3, <invalid sloc>> col:3 implicit used .capture_expr. 'long'
-// CHECK-NEXT: | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'long' '-'
-// CHECK-NEXT: | |-BinaryOperator {{.*}} <col:3, line:38:28> 'long' '*'
-// CHECK-NEXT: | | |-ImplicitCastExpr {{.*}} <line:37:3, col:26> 'long' <IntegralCast>
-// CHECK-NEXT: | | | `-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} <line:38:5, col:28> 'long' <IntegralCast>
-// CHECK-NEXT: | | `-BinaryOperator {{.*}} <col:5, col:28> 'int' '/'
-// CHECK-NEXT: | | |-ParenExpr {{.*}} <col:5> 'int'
-// CHECK-NEXT: | | | `-BinaryOperator {{.*}} <col:25, col:5> 'int' '-'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | `-ParenExpr {{.*}} <col:5> 'int'
-// CHECK-NEXT: | | | `-BinaryOperator {{.*}} <col:18, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:18, col:28> 'int' '-'
-// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
-// CHECK-NEXT: | `-ImplicitCastExpr {{.*}} <<invalid sloc>> 'long' <IntegralCast>
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:37:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:38:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
+// RUN: %clang_cc1 -triple x86_64-unknown-unknown -fopenmp -ast-dump %s | FileCheck --match-full-lines -implicit-check-not=openmp_structured_block %s
+
+void test_one(int x) {
+#pragma omp target
+#pragma omp teams distribute parallel for
+ for (int i = 0; i < x; i++)
+ ;
+}
+
+void test_two(int x, int y) {
+#pragma omp target
+#pragma omp teams distribute parallel for
+ for (int i = 0; i < x; i++)
+ for (int i = 0; i < y; i++)
+ ;
+}
+
+void test_three(int x, int y) {
+#pragma omp target
+#pragma omp teams distribute parallel for collapse(1)
+ for (int i = 0; i < x; i++)
+ for (int i = 0; i < y; i++)
+ ;
+}
+
+void test_four(int x, int y) {
+#pragma omp target
+#pragma omp teams distribute parallel for collapse(2)
+ for (int i = 0; i < x; i++)
+ for (int i = 0; i < y; i++)
+ ;
+}
+
+void test_five(int x, int y, int z) {
+#pragma omp target
+#pragma omp teams distribute parallel for collapse(2)
+ for (int i = 0; i < x; i++)
+ for (int i = 0; i < y; i++)
+ for (int i = 0; i < z; i++)
+ ;
+}
+
+// CHECK: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>
+// CHECK-NEXT: |-TypedefDecl {{.*}} <<invalid sloc>> <invalid sloc> implicit __int128_t '__int128'
+// CHECK-NEXT: | `-typeDetails: BuiltinType {{.*}} '__int128'
+// CHECK-NEXT: |-TypedefDecl {{.*}} <<invalid sloc>> <invalid sloc> implicit __uint128_t 'unsigned __int128'
+// CHECK-NEXT: | `-typeDetails: BuiltinType {{.*}} 'unsigned __int128'
+// CHECK-NEXT: |-TypedefDecl {{.*}} <<invalid sloc>> <invalid sloc> implicit __NSConstantString 'struct __NSConstantString_tag'
+// CHECK-NEXT: | `-typeDetails: RecordType {{.*}} 'struct __NSConstantString_tag'
+// CHECK-NEXT: | `-Record {{.*}} '__NSConstantString_tag'
+// CHECK-NEXT: |-TypedefDecl {{.*}} <<invalid sloc>> <invalid sloc> implicit __builtin_ms_va_list 'char *'
+// CHECK-NEXT: | `-typeDetails: PointerType {{.*}} 'char *'
+// CHECK-NEXT: | `-typeDetails: BuiltinType {{.*}} 'char'
+// CHECK-NEXT: |-TypedefDecl {{.*}} <<invalid sloc>> <invalid sloc> implicit __builtin_va_list 'struct __va_list_tag[1]'
+// CHECK-NEXT: | `-typeDetails: ConstantArrayType {{.*}} 'struct __va_list_tag[1]' 1
+// CHECK-NEXT: | `-typeDetails: RecordType {{.*}} 'struct __va_list_tag'
+// CHECK-NEXT: | `-Record {{.*}} '__va_list_tag'
+// CHECK-NEXT: |-FunctionDecl {{.*}} test_one 'void (int)'
+// CHECK-NEXT: | |-ParmVarDecl {{.*}} used x 'int'
+// CHECK-NEXT: | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | `-CompoundStmt {{.*}}
+// CHECK-NEXT: | `-OMPTargetDirective {{.*}}
+// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK-NEXT: | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | `-CapturedStmt {{.*}}
+// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | |-CapturedStmt {{.*}}
+// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | |-OMPTeamsDistributeParallelForDirective {{.*}}
+// CHECK-NEXT: | | | | | `-CapturedStmt {{.*}}
+// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | | | |-CapturedStmt {{.*}}
+// CHECK-NEXT: | | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | | | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | |-RecordDecl {{.*}} implicit struct definition
+// CHECK-NEXT: | | | | | | | |-attrDetails: CapturedRecordAttr {{.*}}
+// CHECK-NEXT: | | | | | | | `-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | |-RecordDecl {{.*}} implicit struct definition
+// CHECK-NEXT: | | | | | |-attrDetails: CapturedRecordAttr {{.*}}
+// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | | |-CapturedStmt {{.*}}
+// CHECK-NEXT: | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | |-RecordDecl {{.*}} implicit struct definition
+// CHECK-NEXT: | | | | | | |-attrDetails: CapturedRecordAttr {{.*}}
+// CHECK-NEXT: | | | | | | `-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-OMPCapturedExprDecl {{.*}} implicit used .capture_expr. 'int'
+// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | `-OMPCapturedExprDecl {{.*}}
+// CHECK-NEXT: | | | | `-BinaryOperator {{.*}}
+// CHECK-NEXT: | | | | |-BinaryOperator {{.*}}
+// CHECK-NEXT: | | | | | |-ParenExpr {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} 'int' '-'
+// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
+// CHECK-NEXT: | | | | | | `-ParenExpr {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}}
+// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} 'int' '-'
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int'
+// CHECK-NEXT: | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} implicit .part_id. 'const int *const restrict'
+// CHECK-NEXT: | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} implicit .privates. 'void *const restrict'
+// CHECK-NEXT: | | | |-qualTypeDetail: QualType {{.*}} 'void *const restrict' const __restrict
+// CHECK-NEXT: | | | | `-typeDetails: PointerType {{.*}} 'void *'
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK-NEXT: | | | |-qualTypeDetail: QualType {{.*}} 'void (*const restrict)(void *const restrict, ...)' const __restrict
+// CHECK-NEXT: | | | | `-typeDetails: PointerType {{.*}} 'void (*)(void *const restrict, ...)'
+// CHECK-NEXT: | | | | `-typeDetails: FunctionProtoType {{.*}} 'void (void *const restrict, ...)' variadic cdecl
+// CHECK-NEXT: | | | | |-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | | | |-functionDetails: cdeclReturnType {{.*}} 'void'
+// CHECK-NEXT: | | | | |-qualTypeDetail: QualType {{.*}} 'void *const restrict' const __restrict
+// CHECK-NEXT: | | | | | `-typeDetails: PointerType {{.*}} 'void *'
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | | |-QualType {{.*}} 'void (void *const restrict, ...)'
+// CHECK-NEXT: | | | `-typeDetails: FunctionProtoType {{.*}} 'void (void *const restrict, ...)' variadic cdecl
+// CHECK-NEXT: | | | |-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | | |-functionDetails: cdeclReturnType {{.*}} 'void'
+// CHECK-NEXT: | | | |-qualTypeDetail: QualType {{.*}} 'void *const restrict' const __restrict
+// CHECK-NEXT: | | | | `-typeDetails: PointerType {{.*}} 'void *'
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} implicit .task_t. 'void *const'
+// CHECK-NEXT: | | | |-qualTypeDetail: QualType {{.*}} 'void *const' const
+// CHECK-NEXT: | | | | `-typeDetails: PointerType {{.*}} 'void *'
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | |-RecordDecl {{.*}} implicit struct definition
+// CHECK-NEXT: | | | |-attrDetails: CapturedRecordAttr {{.*}}
+// CHECK-NEXT: | | | `-FieldDecl {{.*}} implicit 'int'
+// CHECK-NEXT: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 36
+// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | |-OMPTeamsDistributeParallelForDirective {{.*}}
+// CHECK-NEXT: | | | `-CapturedStmt {{.*}}
+// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | |-CapturedStmt {{.*}}
+// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | |-RecordDecl {{.*}} implicit struct definition
+// CHECK-NEXT: | | | | | |-attrDetails: CapturedRecordAttr {{.*}}
+// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | |-RecordDecl {{.*}} implicit struct definition
+// CHECK-NEXT: | | | |-attrDetails: CapturedRecordAttr {{.*}}
+// CHECK-NEXT: | | | `-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | |-CapturedStmt {{.*}}
+// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | |-RecordDecl {{.*}} implicit struct definition
+// CHECK-NEXT: | | | | |-attrDetails: CapturedRecordAttr {{.*}}
+// CHECK-NEXT: | | | | `-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | |-OMPCapturedExprDecl {{.*}} implicit used .capture_expr. 'int'
+// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | `-OMPCapturedExprDecl {{.*}}
+// CHECK-NEXT: | | `-BinaryOperator {{.*}}
+// CHECK-NEXT: | | |-BinaryOperator {{.*}} 'int' '/'
+// CHECK-NEXT: | | | |-ParenExpr {{.*}} 'int'
+// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} 'int' '-'
+// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
+// CHECK-NEXT: | | | | `-ParenExpr {{.*}} 'int'
+// CHECK-NEXT: | | | | `-BinaryOperator {{.*}}
+// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} 'int' '-'
+// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK-NEXT: | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK-NEXT: |-FunctionDecl {{.*}} test_two 'void (int, int)'
+// CHECK-NEXT: | |-ParmVarDecl {{.*}} used x 'int'
+// CHECK-NEXT: | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | |-ParmVarDecl {{.*}} used y 'int'
+// CHECK-NEXT: | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | `-CompoundStmt {{.*}}
+// CHECK-NEXT: | `-OMPTargetDirective {{.*}}
+// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK-NEXT: | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | `-CapturedStmt {{.*}}
+// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | |-CapturedStmt {{.*}}
+// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | |-OMPTeamsDistributeParallelForDirective {{.*}}
+// CHECK-NEXT: | | | | | `-CapturedStmt {{.*}}
+// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | | | |-CapturedStmt {{.*}}
+// CHECK-NEXT: | | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | | | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | |-RecordDecl {{.*}} implicit struct definition
+// CHECK-NEXT: | | | | | | | |-attrDetails: CapturedRecordAttr {{.*}}
+// CHECK-NEXT: | | | | | | | |-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | | | | `-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | |-RecordDecl {{.*}} implicit struct definition
+// CHECK-NEXT: | | | | | |-attrDetails: CapturedRecordAttr {{.*}}
+// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | | |-CapturedStmt {{.*}}
+// CHECK-NEXT: | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | |-RecordDecl {{.*}} implicit struct definition
+// CHECK-NEXT: | | | | | | |-attrDetails: CapturedRecordAttr {{.*}}
+// CHECK-NEXT: | | | | | | |-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | | | `-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-OMPCapturedExprDecl {{.*}} implicit used .capture_expr. 'int'
+// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | `-OMPCapturedExprDecl {{.*}}
+// CHECK-NEXT: | | | | `-BinaryOperator {{.*}}
+// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} 'int' '/'
+// CHECK-NEXT: | | | | | |-ParenExpr {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} 'int' '-'
+// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
+// CHECK-NEXT: | | | | | | `-ParenExpr {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}}
+// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} 'int' '-'
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int'
+// CHECK-NEXT: | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} implicit .part_id. 'const int *const restrict'
+// CHECK-NEXT: | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} implicit .privates. 'void *const restrict'
+// CHECK-NEXT: | | | |-qualTypeDetail: QualType {{.*}} 'void *const restrict' const __restrict
+// CHECK-NEXT: | | | | `-typeDetails: PointerType {{.*}} 'void *'
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK-NEXT: | | | |-qualTypeDetail: QualType {{.*}} 'void (*const restrict)(void *const restrict, ...)' const __restrict
+// CHECK-NEXT: | | | | `-typeDetails: PointerType {{.*}} 'void (*)(void *const restrict, ...)'
+// CHECK-NEXT: | | | | `-typeDetails: FunctionProtoType {{.*}} 'void (void *const restrict, ...)' variadic cdecl
+// CHECK-NEXT: | | | | |-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | | | |-functionDetails: cdeclReturnType {{.*}} 'void'
+// CHECK-NEXT: | | | | |-qualTypeDetail: QualType {{.*}} 'void *const restrict' const __restrict
+// CHECK-NEXT: | | | | | `-typeDetails: PointerType {{.*}} 'void *'
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | | |-QualType {{.*}} 'void (void *const restrict, ...)'
+// CHECK-NEXT: | | | `-typeDetails: FunctionProtoType {{.*}} 'void (void *const restrict, ...)' variadic cdecl
+// CHECK-NEXT: | | | |-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | | |-functionDetails: cdeclReturnType {{.*}} 'void'
+// CHECK-NEXT: | | | |-qualTypeDetail: QualType {{.*}} 'void *const restrict' const __restrict
+// CHECK-NEXT: | | | | `-typeDetails: PointerType {{.*}} 'void *'
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} implicit .task_t. 'void *const'
+// CHECK-NEXT: | | | |-qualTypeDetail: QualType {{.*}} 'void *const' const
+// CHECK-NEXT: | | | | `-typeDetails: PointerType {{.*}} 'void *'
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | |-RecordDecl {{.*}} implicit struct definition
+// CHECK-NEXT: | | | |-attrDetails: CapturedRecordAttr {{.*}}
+// CHECK-NEXT: | | | |-FieldDecl {{.*}} implicit 'int'
+// CHECK-NEXT: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 36
+// CHECK-NEXT: | | | `-FieldDecl {{.*}} implicit 'int'
+// CHECK-NEXT: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 36
+// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | |-OMPTeamsDistributeParallelForDirective {{.*}}
+// CHECK-NEXT: | | | `-CapturedStmt {{.*}}
+// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | |-CapturedStmt {{.*}}
+// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | |-RecordDecl {{.*}} implicit struct definition
+// CHECK-NEXT: | | | | | |-attrDetails: CapturedRecordAttr {{.*}}
+// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | |-RecordDecl {{.*}} implicit struct definition
+// CHECK-NEXT: | | | |-attrDetails: CapturedRecordAttr {{.*}}
+// CHECK-NEXT: | | | |-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | `-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | |-CapturedStmt {{.*}}
+// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | |-RecordDecl {{.*}} implicit struct definition
+// CHECK-NEXT: | | | | |-attrDetails: CapturedRecordAttr {{.*}}
+// CHECK-NEXT: | | | | |-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | `-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | |-OMPCapturedExprDecl {{.*}} implicit used .capture_expr. 'int'
+// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | `-OMPCapturedExprDecl {{.*}}
+// CHECK-NEXT: | | `-BinaryOperator {{.*}}
+// CHECK-NEXT: | | |-BinaryOperator {{.*}} 'int' '/'
+// CHECK-NEXT: | | | |-ParenExpr {{.*}} 'int'
+// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} 'int' '-'
+// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
+// CHECK-NEXT: | | | | `-ParenExpr {{.*}} 'int'
+// CHECK-NEXT: | | | | `-BinaryOperator {{.*}}
+// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} 'int' '-'
+// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK-NEXT: | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK-NEXT: | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK-NEXT: |-FunctionDecl {{.*}} test_three 'void (int, int)'
+// CHECK-NEXT: | |-ParmVarDecl {{.*}} used x 'int'
+// CHECK-NEXT: | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | |-ParmVarDecl {{.*}} used y 'int'
+// CHECK-NEXT: | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | `-CompoundStmt {{.*}}
+// CHECK-NEXT: | `-OMPTargetDirective {{.*}}
+// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK-NEXT: | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | `-CapturedStmt {{.*}}
+// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | |-CapturedStmt {{.*}}
+// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | |-OMPTeamsDistributeParallelForDirective {{.*}}
+// CHECK-NEXT: | | | | | |-OMPCollapseClause {{.*}}
+// CHECK-NEXT: | | | | | | `-ConstantExpr {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-value: Int 1
+// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK-NEXT: | | | | | `-CapturedStmt {{.*}}
+// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | | | |-CapturedStmt {{.*}}
+// CHECK-NEXT: | | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | | | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | |-RecordDecl {{.*}} implicit struct definition
+// CHECK-NEXT: | | | | | | | |-attrDetails: CapturedRecordAttr {{.*}}
+// CHECK-NEXT: | | | | | | | |-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | | | | `-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | |-RecordDecl {{.*}} implicit struct definition
+// CHECK-NEXT: | | | | | |-attrDetails: CapturedRecordAttr {{.*}}
+// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | | |-CapturedStmt {{.*}}
+// CHECK-NEXT: | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | |-RecordDecl {{.*}} implicit struct definition
+// CHECK-NEXT: | | | | | | |-attrDetails: CapturedRecordAttr {{.*}}
+// CHECK-NEXT: | | | | | | |-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | | | `-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-OMPCapturedExprDecl {{.*}} implicit used .capture_expr. 'int'
+// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | `-OMPCapturedExprDecl {{.*}}
+// CHECK-NEXT: | | | | `-BinaryOperator {{.*}}
+// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} 'int' '/'
+// CHECK-NEXT: | | | | | |-ParenExpr {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} 'int' '-'
+// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
+// CHECK-NEXT: | | | | | | `-ParenExpr {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}}
+// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} 'int' '-'
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int'
+// CHECK-NEXT: | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} implicit .part_id. 'const int *const restrict'
+// CHECK-NEXT: | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} implicit .privates. 'void *const restrict'
+// CHECK-NEXT: | | | |-qualTypeDetail: QualType {{.*}} 'void *const restrict' const __restrict
+// CHECK-NEXT: | | | | `-typeDetails: PointerType {{.*}} 'void *'
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK-NEXT: | | | |-qualTypeDetail: QualType {{.*}} 'void (*const restrict)(void *const restrict, ...)' const __restrict
+// CHECK-NEXT: | | | | `-typeDetails: PointerType {{.*}} 'void (*)(void *const restrict, ...)'
+// CHECK-NEXT: | | | | `-typeDetails: FunctionProtoType {{.*}} 'void (void *const restrict, ...)' variadic cdecl
+// CHECK-NEXT: | | | | |-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | | | |-functionDetails: cdeclReturnType {{.*}} 'void'
+// CHECK-NEXT: | | | | |-qualTypeDetail: QualType {{.*}} 'void *const restrict' const __restrict
+// CHECK-NEXT: | | | | | `-typeDetails: PointerType {{.*}} 'void *'
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | | |-QualType {{.*}} 'void (void *const restrict, ...)'
+// CHECK-NEXT: | | | `-typeDetails: FunctionProtoType {{.*}} 'void (void *const restrict, ...)' variadic cdecl
+// CHECK-NEXT: | | | |-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | | |-functionDetails: cdeclReturnType {{.*}} 'void'
+// CHECK-NEXT: | | | |-qualTypeDetail: QualType {{.*}} 'void *const restrict' const __restrict
+// CHECK-NEXT: | | | | `-typeDetails: PointerType {{.*}} 'void *'
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} implicit .task_t. 'void *const'
+// CHECK-NEXT: | | | |-qualTypeDetail: QualType {{.*}} 'void *const' const
+// CHECK-NEXT: | | | | `-typeDetails: PointerType {{.*}} 'void *'
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | |-RecordDecl {{.*}} implicit struct definition
+// CHECK-NEXT: | | | |-attrDetails: CapturedRecordAttr {{.*}}
+// CHECK-NEXT: | | | |-FieldDecl {{.*}} implicit 'int'
+// CHECK-NEXT: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 36
+// CHECK-NEXT: | | | `-FieldDecl {{.*}} implicit 'int'
+// CHECK-NEXT: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 36
+// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | |-OMPTeamsDistributeParallelForDirective {{.*}}
+// CHECK-NEXT: | | | |-OMPCollapseClause {{.*}}
+// CHECK-NEXT: | | | | `-ConstantExpr {{.*}} 'int'
+// CHECK-NEXT: | | | | |-value: Int 1
+// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK-NEXT: | | | `-CapturedStmt {{.*}}
+// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | |-CapturedStmt {{.*}}
+// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | |-RecordDecl {{.*}} implicit struct definition
+// CHECK-NEXT: | | | | | |-attrDetails: CapturedRecordAttr {{.*}}
+// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | |-RecordDecl {{.*}} implicit struct definition
+// CHECK-NEXT: | | | |-attrDetails: CapturedRecordAttr {{.*}}
+// CHECK-NEXT: | | | |-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | `-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | |-CapturedStmt {{.*}}
+// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | |-RecordDecl {{.*}} implicit struct definition
+// CHECK-NEXT: | | | | |-attrDetails: CapturedRecordAttr {{.*}}
+// CHECK-NEXT: | | | | |-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | `-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | |-OMPCapturedExprDecl {{.*}} implicit used .capture_expr. 'int'
+// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | `-OMPCapturedExprDecl {{.*}}
+// CHECK-NEXT: | | `-BinaryOperator {{.*}}
+// CHECK-NEXT: | | |-BinaryOperator {{.*}} 'int' '/'
+// CHECK-NEXT: | | | |-ParenExpr {{.*}} 'int'
+// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} 'int' '-'
+// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
+// CHECK-NEXT: | | | | `-ParenExpr {{.*}} 'int'
+// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} 'int' '+'
+// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} 'int' '-'
+// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK-NEXT: | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK-NEXT: | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK-NEXT: |-FunctionDecl {{.*}} test_four 'void (int, int)'
+// CHECK-NEXT: | |-ParmVarDecl {{.*}} used x 'int'
+// CHECK-NEXT: | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | |-ParmVarDecl {{.*}} used y 'int'
+// CHECK-NEXT: | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | `-CompoundStmt {{.*}}
+// CHECK-NEXT: | `-OMPTargetDirective {{.*}}
+// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK-NEXT: | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | `-CapturedStmt {{.*}}
+// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | |-CapturedStmt {{.*}}
+// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | |-OMPTeamsDistributeParallelForDirective {{.*}}
+// CHECK-NEXT: | | | | | |-OMPCollapseClause {{.*}}
+// CHECK-NEXT: | | | | | | `-ConstantExpr {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-value: Int 2
+// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} 'int' 2
+// CHECK-NEXT: | | | | | `-CapturedStmt {{.*}}
+// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | | | |-CapturedStmt {{.*}}
+// CHECK-NEXT: | | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | | | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | |-RecordDecl {{.*}} implicit struct definition
+// CHECK-NEXT: | | | | | | | |-attrDetails: CapturedRecordAttr {{.*}}
+// CHECK-NEXT: | | | | | | | |-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | | | | `-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | |-RecordDecl {{.*}} implicit struct definition
+// CHECK-NEXT: | | | | | |-attrDetails: CapturedRecordAttr {{.*}}
+// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | | |-CapturedStmt {{.*}}
+// CHECK-NEXT: | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | |-RecordDecl {{.*}} implicit struct definition
+// CHECK-NEXT: | | | | | | |-attrDetails: CapturedRecordAttr {{.*}}
+// CHECK-NEXT: | | | | | | |-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | | | `-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-OMPCapturedExprDecl {{.*}} implicit used .capture_expr. 'int'
+// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | |-OMPCapturedExprDecl {{.*}} implicit used .capture_expr. 'int'
+// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | `-OMPCapturedExprDecl {{.*}}
+// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} 'long' '-'
+// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} 'long' '*'
+// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} 'long' <IntegralCast>
+// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} 'int' '/'
+// CHECK-NEXT: | | | | | | |-ParenExpr {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | `-BinaryOperator {{.*}} 'int' '-'
+// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
+// CHECK-NEXT: | | | | | | | `-ParenExpr {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | `-BinaryOperator {{.*}} 'int' '+'
+// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} 'int' '-'
+// CHECK-NEXT: | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} 'long' <IntegralCast>
+// CHECK-NEXT: | | | | | `-BinaryOperator {{.*}} 'int' '/'
+// CHECK-NEXT: | | | | | |-ParenExpr {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} 'int' '-'
+// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
+// CHECK-NEXT: | | | | | | `-ParenExpr {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} 'int' '+'
+// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} 'int' '-'
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <<invalid sloc>> 'long' <IntegralCast>
+// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int'
+// CHECK-NEXT: | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} implicit .part_id. 'const int *const restrict'
+// CHECK-NEXT: | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} implicit .privates. 'void *const restrict'
+// CHECK-NEXT: | | | |-qualTypeDetail: QualType {{.*}} 'void *const restrict' const __restrict
+// CHECK-NEXT: | | | | `-typeDetails: PointerType {{.*}} 'void *'
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK-NEXT: | | | |-qualTypeDetail: QualType {{.*}} 'void (*const restrict)(void *const restrict, ...)' const __restrict
+// CHECK-NEXT: | | | | `-typeDetails: PointerType {{.*}} 'void (*)(void *const restrict, ...)'
+// CHECK-NEXT: | | | | `-typeDetails: FunctionProtoType {{.*}} 'void (void *const restrict, ...)' variadic cdecl
+// CHECK-NEXT: | | | | |-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | | | |-functionDetails: cdeclReturnType {{.*}} 'void'
+// CHECK-NEXT: | | | | |-qualTypeDetail: QualType {{.*}} 'void *const restrict' const __restrict
+// CHECK-NEXT: | | | | | `-typeDetails: PointerType {{.*}} 'void *'
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | | |-QualType {{.*}} 'void (void *const restrict, ...)'
+// CHECK-NEXT: | | | `-typeDetails: FunctionProtoType {{.*}} 'void (void *const restrict, ...)' variadic cdecl
+// CHECK-NEXT: | | | |-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | | |-functionDetails: cdeclReturnType {{.*}} 'void'
+// CHECK-NEXT: | | | |-qualTypeDetail: QualType {{.*}} 'void *const restrict' const __restrict
+// CHECK-NEXT: | | | | `-typeDetails: PointerType {{.*}} 'void *'
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} implicit .task_t. 'void *const'
+// CHECK-NEXT: | | | |-qualTypeDetail: QualType {{.*}} 'void *const' const
+// CHECK-NEXT: | | | | `-typeDetails: PointerType {{.*}} 'void *'
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | |-RecordDecl {{.*}} implicit struct definition
+// CHECK-NEXT: | | | |-attrDetails: CapturedRecordAttr {{.*}}
+// CHECK-NEXT: | | | |-FieldDecl {{.*}} implicit 'int'
+// CHECK-NEXT: | | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 36
+// CHECK-NEXT: | | | `-FieldDecl {{.*}} implicit 'int'
+// CHECK-NEXT: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 36
+// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | |-OMPTeamsDistributeParallelForDirective {{.*}}
+// CHECK-NEXT: | | | |-OMPCollapseClause {{.*}}
+// CHECK-NEXT: | | | | `-ConstantExpr {{.*}} 'int'
+// CHECK-NEXT: | | | | |-value: Int 2
+// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} 'int' 2
+// CHECK-NEXT: | | | `-CapturedStmt {{.*}}
+// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | |-CapturedStmt {{.*}}
+// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | |-RecordDecl {{.*}} implicit struct definition
+// CHECK-NEXT: | | | | | |-attrDetails: CapturedRecordAttr {{.*}}
+// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | |-RecordDecl {{.*}} implicit struct definition
+// CHECK-NEXT: | | | |-attrDetails: CapturedRecordAttr {{.*}}
+// CHECK-NEXT: | | | |-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | `-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | |-CapturedStmt {{.*}}
+// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | |-RecordDecl {{.*}} implicit struct definition
+// CHECK-NEXT: | | | | |-attrDetails: CapturedRecordAttr {{.*}}
+// CHECK-NEXT: | | | | |-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | `-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | |-OMPCapturedExprDecl {{.*}} implicit used .capture_expr. 'int'
+// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | |-OMPCapturedExprDecl {{.*}} implicit used .capture_expr. 'int'
+// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | `-OMPCapturedExprDecl {{.*}} implicit used .capture_expr. 'long'
+// CHECK-NEXT: | | `-BinaryOperator {{.*}} 'long' '-'
+// CHECK-NEXT: | | |-BinaryOperator {{.*}} 'long' '*'
+// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} 'long' <IntegralCast>
+// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} 'int' '/'
+// CHECK-NEXT: | | | | |-ParenExpr {{.*}} 'int'
+// CHECK-NEXT: | | | | | `-BinaryOperator {{.*}} 'int' '-'
+// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
+// CHECK-NEXT: | | | | | `-ParenExpr {{.*}} 'int'
+// CHECK-NEXT: | | | | | `-BinaryOperator {{.*}} 'int' '+'
+// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} 'int' '-'
+// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} 'long' <IntegralCast>
+// CHECK-NEXT: | | | `-BinaryOperator {{.*}} 'int' '/'
+// CHECK-NEXT: | | | |-ParenExpr {{.*}} 'int'
+// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} 'int' '-'
+// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
+// CHECK-NEXT: | | | | `-ParenExpr {{.*}} 'int'
+// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} 'int' '+'
+// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} 'int' '-'
+// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} <<invalid sloc>> 'long' <IntegralCast>
+// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK-NEXT: | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK-NEXT: | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK-NEXT: `-FunctionDecl {{.*}} test_five 'void (int, int, int)'
+// CHECK-NEXT: |-ParmVarDecl {{.*}} used x 'int'
+// CHECK-NEXT: | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: |-ParmVarDecl {{.*}} used y 'int'
+// CHECK-NEXT: | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: |-ParmVarDecl {{.*}} used z 'int'
+// CHECK-NEXT: | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: `-CompoundStmt {{.*}}
+// CHECK-NEXT: `-OMPTargetDirective {{.*}}
+// CHECK-NEXT: |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
+// CHECK-NEXT: | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: `-CapturedStmt {{.*}}
+// CHECK-NEXT: |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | |-CapturedStmt {{.*}}
+// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | |-OMPTeamsDistributeParallelForDirective {{.*}}
+// CHECK-NEXT: | | | | |-OMPCollapseClause {{.*}}
+// CHECK-NEXT: | | | | | `-ConstantExpr {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-value: Int 2
+// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} 'int' 2
+// CHECK-NEXT: | | | | `-CapturedStmt {{.*}}
+// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | | |-CapturedStmt {{.*}}
+// CHECK-NEXT: | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | |-RecordDecl {{.*}} implicit struct definition
+// CHECK-NEXT: | | | | | | |-attrDetails: CapturedRecordAttr {{.*}}
+// CHECK-NEXT: | | | | | | |-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | | | |-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | | | `-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | |-RecordDecl {{.*}} implicit struct definition
+// CHECK-NEXT: | | | | |-attrDetails: CapturedRecordAttr {{.*}}
+// CHECK-NEXT: | | | | |-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | |-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | `-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | |-CapturedStmt {{.*}}
+// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | |-RecordDecl {{.*}} implicit struct definition
+// CHECK-NEXT: | | | | | |-attrDetails: CapturedRecordAttr {{.*}}
+// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | |-OMPCapturedExprDecl {{.*}} implicit used .capture_expr. 'int'
+// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | |-OMPCapturedExprDecl {{.*}} implicit used .capture_expr. 'int'
+// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | `-OMPCapturedExprDecl {{.*}} implicit used .capture_expr. 'long'
+// CHECK-NEXT: | | | `-BinaryOperator {{.*}} 'long' '-'
+// CHECK-NEXT: | | | |-BinaryOperator {{.*}} 'long' '*'
+// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} 'long' <IntegralCast>
+// CHECK-NEXT: | | | | | `-BinaryOperator {{.*}} 'int' '/'
+// CHECK-NEXT: | | | | | |-ParenExpr {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} 'int' '-'
+// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
+// CHECK-NEXT: | | | | | | `-ParenExpr {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} 'int' '+'
+// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} 'int' '-'
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} 'long' <IntegralCast>
+// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} 'int' '/'
+// CHECK-NEXT: | | | | |-ParenExpr {{.*}} 'int'
+// CHECK-NEXT: | | | | | `-BinaryOperator {{.*}} 'int' '-'
+// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
+// CHECK-NEXT: | | | | | `-ParenExpr {{.*}} 'int'
+// CHECK-NEXT: | | | | | `-BinaryOperator {{.*}} 'int' '+'
+// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} 'int' '-'
+// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <<invalid sloc>> 'long' <IntegralCast>
+// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK-NEXT: | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int'
+// CHECK-NEXT: | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} implicit .part_id. 'const int *const restrict'
+// CHECK-NEXT: | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} implicit .privates. 'void *const restrict'
+// CHECK-NEXT: | | |-qualTypeDetail: QualType {{.*}} 'void *const restrict' const __restrict
+// CHECK-NEXT: | | | `-typeDetails: PointerType {{.*}} 'void *'
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK-NEXT: | | |-qualTypeDetail: QualType {{.*}} 'void (*const restrict)(void *const restrict, ...)' const __restrict
+// CHECK-NEXT: | | | `-typeDetails: PointerType {{.*}} 'void (*)(void *const restrict, ...)'
+// CHECK-NEXT: | | | `-typeDetails: FunctionProtoType {{.*}} 'void (void *const restrict, ...)' variadic cdecl
+// CHECK-NEXT: | | | |-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | | |-functionDetails: cdeclReturnType {{.*}} 'void'
+// CHECK-NEXT: | | | |-qualTypeDetail: QualType {{.*}} 'void *const restrict' const __restrict
+// CHECK-NEXT: | | | | `-typeDetails: PointerType {{.*}} 'void *'
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | |-QualType {{.*}} 'void (void *const restrict, ...)'
+// CHECK-NEXT: | | `-typeDetails: FunctionProtoType {{.*}} 'void (void *const restrict, ...)' variadic cdecl
+// CHECK-NEXT: | | |-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | |-functionDetails: cdeclReturnType {{.*}} 'void'
+// CHECK-NEXT: | | |-qualTypeDetail: QualType {{.*}} 'void *const restrict' const __restrict
+// CHECK-NEXT: | | | `-typeDetails: PointerType {{.*}} 'void *'
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} implicit .task_t. 'void *const'
+// CHECK-NEXT: | | |-qualTypeDetail: QualType {{.*}} 'void *const' const
+// CHECK-NEXT: | | | `-typeDetails: PointerType {{.*}} 'void *'
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | | `-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK-NEXT: | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | `-Record {{.*}} ''
+// CHECK-NEXT: | |-RecordDecl {{.*}} implicit struct definition
+// CHECK-NEXT: | | |-attrDetails: CapturedRecordAttr {{.*}}
+// CHECK-NEXT: | | |-FieldDecl {{.*}} implicit 'int'
+// CHECK-NEXT: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 36
+// CHECK-NEXT: | | |-FieldDecl {{.*}} implicit 'int'
+// CHECK-NEXT: | | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 36
+// CHECK-NEXT: | | `-FieldDecl {{.*}} implicit 'int'
+// CHECK-NEXT: | | `-attrDetails: OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 36
+// CHECK-NEXT: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | |-OMPTeamsDistributeParallelForDirective {{.*}}
+// CHECK-NEXT: | | |-OMPCollapseClause {{.*}}
+// CHECK-NEXT: | | | `-ConstantExpr {{.*}} 'int'
+// CHECK-NEXT: | | | |-value: Int 2
+// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} 'int' 2
+// CHECK-NEXT: | | `-CapturedStmt {{.*}}
+// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | |-CapturedStmt {{.*}}
+// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | |-RecordDecl {{.*}} implicit struct definition
+// CHECK-NEXT: | | | | |-attrDetails: CapturedRecordAttr {{.*}}
+// CHECK-NEXT: | | | | |-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | |-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | | `-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | `-Record {{.*}} ''
+// CHECK-NEXT: | |-RecordDecl {{.*}} implicit struct definition
+// CHECK-NEXT: | | |-attrDetails: CapturedRecordAttr {{.*}}
+// CHECK-NEXT: | | |-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | |-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | `-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | |-CapturedStmt {{.*}}
+// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | |-RecordDecl {{.*}} implicit struct definition
+// CHECK-NEXT: | | | |-attrDetails: CapturedRecordAttr {{.*}}
+// CHECK-NEXT: | | | |-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | |-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | | `-FieldDecl {{.*}} implicit 'int &'
+// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK-NEXT: | | |-ForStmt {{.*}}
+// CHECK-NEXT: | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | `-ForStmt {{.*}}
+// CHECK-NEXT: | | | |-DeclStmt {{.*}}
+// CHECK-NEXT: | | | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | |-<<<NULL>>>
+// CHECK-NEXT: | | | |-BinaryOperator {{.*}} 'int' '<'
+// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | | | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK-NEXT: | | | `-NullStmt {{.*}}
+// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK-NEXT: | | | |-qualTypeDetail: QualType {{.*}} 'const int *const restrict' const __restrict
+// CHECK-NEXT: | | | | `-typeDetails: PointerType {{.*}} 'const int *'
+// CHECK-NEXT: | | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} implicit used .previous.lb. 'const unsigned long'
+// CHECK-NEXT: | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} implicit used .previous.ub. 'const unsigned long'
+// CHECK-NEXT: | | | `-qualTypeDetail: QualType {{.*}} 'const unsigned long' const
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'unsigned long'
+// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}}
+// CHECK-NEXT: | | | |-qualTypeDetail: QualType {{.*}}
+// CHECK-NEXT: | | | | `-typeDetails: PointerType {{.*}}
+// CHECK-NEXT: | | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | | `-typeDetails: RecordType {{.*}}
+// CHECK-NEXT: | | | `-Record {{.*}} ''
+// CHECK-NEXT: | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | |-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK-NEXT: | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | |-OMPCapturedExprDecl {{.*}} implicit used .capture_expr. 'int'
+// CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | |-OMPCapturedExprDecl {{.*}} implicit used .capture_expr. 'int'
+// CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK-NEXT: | `-OMPCapturedExprDecl {{.*}} implicit used .capture_expr. 'long'
+// CHECK-NEXT: | `-BinaryOperator {{.*}} 'long' '-'
+// CHECK-NEXT: | |-BinaryOperator {{.*}} 'long' '*'
+// CHECK-NEXT: | | |-ImplicitCastExpr {{.*}} 'long' <IntegralCast>
+// CHECK-NEXT: | | | `-BinaryOperator {{.*}} 'int' '/'
+// CHECK-NEXT: | | | |-ParenExpr {{.*}} 'int'
+// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} 'int' '-'
+// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
+// CHECK-NEXT: | | | | `-ParenExpr {{.*}} 'int'
+// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} 'int' '+'
+// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} 'int' '-'
+// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} 'long' <IntegralCast>
+// CHECK-NEXT: | | `-BinaryOperator {{.*}} 'int' '/'
+// CHECK-NEXT: | | |-ParenExpr {{.*}} 'int'
+// CHECK-NEXT: | | | `-BinaryOperator {{.*}} 'int' '-'
+// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
+// CHECK-NEXT: | | | `-ParenExpr {{.*}} 'int'
+// CHECK-NEXT: | | | `-BinaryOperator {{.*}} 'int' '+'
+// CHECK-NEXT: | | | |-BinaryOperator {{.*}} 'int' '-'
+// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK-NEXT: | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK-NEXT: | `-ImplicitCastExpr {{.*}} <<invalid sloc>> 'long' <IntegralCast>
+// CHECK-NEXT: | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
+// CHECK-NEXT: |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK-NEXT: |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK-NEXT: `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'z' 'int'
\ No newline at end of file
diff --git a/clang/test/AST/ast-dump-openmp-teams-distribute-simd.c b/clang/test/AST/ast-dump-openmp-teams-distribute-simd.c
index 4b222de60a602..9744e0ca79f93 100644
--- a/clang/test/AST/ast-dump-openmp-teams-distribute-simd.c
+++ b/clang/test/AST/ast-dump-openmp-teams-distribute-simd.c
@@ -1,1223 +1,1942 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -fopenmp -ast-dump %s | FileCheck --match-full-lines -implicit-check-not=openmp_structured_block %s
-
-void test_one(int x) {
-#pragma omp target
-#pragma omp teams distribute simd
- for (int i = 0; i < x; i++)
- ;
-}
-
-void test_two(int x, int y) {
-#pragma omp target
-#pragma omp teams distribute simd
- for (int i = 0; i < x; i++)
- for (int i = 0; i < y; i++)
- ;
-}
-
-void test_three(int x, int y) {
-#pragma omp target
-#pragma omp teams distribute simd collapse(1)
- for (int i = 0; i < x; i++)
- for (int i = 0; i < y; i++)
- ;
-}
-
-void test_four(int x, int y) {
-#pragma omp target
-#pragma omp teams distribute simd collapse(2)
- for (int i = 0; i < x; i++)
- for (int i = 0; i < y; i++)
- ;
-}
-
-void test_five(int x, int y, int z) {
-#pragma omp target
-#pragma omp teams distribute simd collapse(2)
- for (int i = 0; i < x; i++)
- for (int i = 0; i < y; i++)
- for (int i = 0; i < z; i++)
- ;
-}
-
-// CHECK: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>
-// CHECK: |-FunctionDecl {{.*}} <{{.*}}ast-dump-openmp-teams-distribute-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>
-// CHECK-NEXT: | `-OMPTargetDirective {{.*}} <line:4:1, col:19>
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:6:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:5:1, col:34>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <col:1, col:34>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-OMPTeamsDistributeSimdDirective {{.*}} <col:1, col:34>
-// 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>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:6:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-simd.c:5:1) *const restrict'
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:6:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <line:5:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:6:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <col:3, line:7:5>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:6:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-simd.c:5:1) *const restrict'
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:6:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-OMPCapturedExprDecl {{.*}} <col:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-OMPCapturedExprDecl {{.*}} <col:3, <invalid sloc>> col:3 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'int' '-'
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:6:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-OMPTeamsDistributeSimdDirective {{.*}} <line:5:1, col:34>
-// 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>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:6:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-simd.c:5:1) *const restrict'
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:6:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-simd.c:4:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <line:5:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:6:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-ForStmt {{.*}} <col:3, line:7:5>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:6:8, col:17>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-simd.c:5:1) *const restrict'
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <line:6:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | |-OMPCapturedExprDecl {{.*}} <col:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-OMPCapturedExprDecl {{.*}} <col:3, <invalid sloc>> col:3 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'int' '-'
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:10:1, line:16:1> line:10:6 test_two 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:29, line:16:1>
-// CHECK-NEXT: | `-OMPTargetDirective {{.*}} <line:11:1, col:19>
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:13:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:12:1, col:34>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <col:1, col:34>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-OMPTeamsDistributeSimdDirective {{.*}} <col:1, col:34>
-// 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>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:13:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}} <line:15:7>
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-simd.c:12:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:13:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:14:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:13:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:11:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-simd.c:11:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <line:12:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:13:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:14:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <line:13:3, line:15:7>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:13:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-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
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-NullStmt {{.*}} <line:15:7>
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-simd.c:12:1) *const restrict'
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:13:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:14:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-OMPCapturedExprDecl {{.*}} <line:13:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-OMPCapturedExprDecl {{.*}} <col:3, <invalid sloc>> col:3 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'int' '-'
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:11:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-simd.c:11:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:13:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:14:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-OMPTeamsDistributeSimdDirective {{.*}} <line:12:1, col:34>
-// 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>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:13:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:15:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-simd.c:12:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:13:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:14:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:13:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:11:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-simd.c:11:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <line:12:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:13:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:14:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-ForStmt {{.*}} <line:13:3, line:15:7>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:13:8, col:17>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-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
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-NullStmt {{.*}} <line:15:7>
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-simd.c:12:1) *const restrict'
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:13:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <line:14:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | |-OMPCapturedExprDecl {{.*}} <line:13:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-OMPCapturedExprDecl {{.*}} <col:3, <invalid sloc>> col:3 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'int' '-'
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:18:1, line:24:1> line:18:6 test_three 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:31, line:24:1>
-// CHECK-NEXT: | `-OMPTargetDirective {{.*}} <line:19:1, col:19>
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:21:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:20:1, col:46>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <col:1, col:46>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-OMPTeamsDistributeSimdDirective {{.*}} <col:1, col:46>
-// CHECK-NEXT: | | | | | |-OMPCollapseClause {{.*}} <col:35, col:45>
-// CHECK-NEXT: | | | | | | `-ConstantExpr {{.*}} <col:44> 'int'
-// CHECK-NEXT: | | | | | | |-value: Int 1
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:44> 'int' 1
-// CHECK-NEXT: | | | | | `-CapturedStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:21:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}} <line:23:7>
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-simd.c:20:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:21:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:22:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:21:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:19:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-simd.c:19:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <line:20:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:21:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:22:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:21:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-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
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-NullStmt {{.*}} <line:23:7>
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-simd.c:20:1) *const restrict'
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:21:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:22:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-OMPCapturedExprDecl {{.*}} <line:21:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-OMPCapturedExprDecl {{.*}} <col:3, <invalid sloc>> col:3 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'int' '-'
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:19:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-simd.c:19:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:21:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:22:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-OMPTeamsDistributeSimdDirective {{.*}} <line:20:1, col:46>
-// CHECK-NEXT: | | | |-OMPCollapseClause {{.*}} <col:35, col:45>
-// CHECK-NEXT: | | | | `-ConstantExpr {{.*}} <col:44> 'int'
-// CHECK-NEXT: | | | | |-value: Int 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:44> 'int' 1
-// CHECK-NEXT: | | | `-CapturedStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:21:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:23:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-simd.c:20:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:21:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:22:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:21:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:19:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-simd.c:19:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <line:20:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:21:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:22:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-ForStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:21:8, col:17>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-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
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-NullStmt {{.*}} <line:23:7>
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-simd.c:20:1) *const restrict'
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:21:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <line:22:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | |-OMPCapturedExprDecl {{.*}} <line:21:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-OMPCapturedExprDecl {{.*}} <col:3, <invalid sloc>> col:3 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'int' '-'
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:26:1, line:32:1> line:26:6 test_four 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:30, line:32:1>
-// CHECK-NEXT: | `-OMPTargetDirective {{.*}} <line:27:1, col:19>
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:29:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:30:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:28:1, col:46>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <col:1, col:46>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-OMPTeamsDistributeSimdDirective {{.*}} <col:1, col:46>
-// CHECK-NEXT: | | | | | |-OMPCollapseClause {{.*}} <col:35, col:45>
-// CHECK-NEXT: | | | | | | `-ConstantExpr {{.*}} <col:44> 'int'
-// CHECK-NEXT: | | | | | | |-value: Int 2
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:44> 'int' 2
-// CHECK-NEXT: | | | | | `-CapturedStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:29:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ForStmt {{.*}} <line:30:5, line:31:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:30:10, col:19>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-simd.c:28:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:29:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:30:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:29:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:30:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:27:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-simd.c:27:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <line:28:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:29:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:30:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:29:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ForStmt {{.*}} <line:30:5, line:31:7>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:30:10, col:19>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-simd.c:28:1) *const restrict'
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:29:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:30:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-OMPCapturedExprDecl {{.*}} <line:29:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-OMPCapturedExprDecl {{.*}} <line:30:25> col:25 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-OMPCapturedExprDecl {{.*}} <line:29:3, <invalid sloc>> col:3 implicit used .capture_expr. 'long'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'long' '-'
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:3, line:30:28> 'long' '*'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <line:29:3, col:26> 'long' <IntegralCast>
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <line:30:5, col:28> 'long' <IntegralCast>
-// CHECK-NEXT: | | | | | `-BinaryOperator {{.*}} <col:5, col:28> 'int' '/'
-// CHECK-NEXT: | | | | | |-ParenExpr {{.*}} <col:5> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:25, col:5> 'int' '-'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | | | `-ParenExpr {{.*}} <col:5> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:18, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:18, col:28> 'int' '-'
-// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <<invalid sloc>> 'long' <IntegralCast>
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:29:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:30:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:27:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-simd.c:27:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:29:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:30:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-OMPTeamsDistributeSimdDirective {{.*}} <line:28:1, col:46>
-// CHECK-NEXT: | | | |-OMPCollapseClause {{.*}} <col:35, col:45>
-// CHECK-NEXT: | | | | `-ConstantExpr {{.*}} <col:44> 'int'
-// CHECK-NEXT: | | | | |-value: Int 2
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:44> 'int' 2
-// CHECK-NEXT: | | | `-CapturedStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:29:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ForStmt {{.*}} <line:30:5, line:31:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:30:10, col:19>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-simd.c:28:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:29:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:30:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:29:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:30:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:27:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-simd.c:27:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <line:28:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:29:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:30:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-ForStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:29:8, col:17>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ForStmt {{.*}} <line:30:5, line:31:7>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:30:10, col:19>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-simd.c:28:1) *const restrict'
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:29:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <line:30:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | |-OMPCapturedExprDecl {{.*}} <line:29:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-OMPCapturedExprDecl {{.*}} <line:30:25> col:25 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-OMPCapturedExprDecl {{.*}} <line:29:3, <invalid sloc>> col:3 implicit used .capture_expr. 'long'
-// CHECK-NEXT: | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'long' '-'
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:3, line:30:28> 'long' '*'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <line:29:3, col:26> 'long' <IntegralCast>
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <line:30:5, col:28> 'long' <IntegralCast>
-// CHECK-NEXT: | | | `-BinaryOperator {{.*}} <col:5, col:28> 'int' '/'
-// CHECK-NEXT: | | | |-ParenExpr {{.*}} <col:5> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:25, col:5> 'int' '-'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | `-ParenExpr {{.*}} <col:5> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:18, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:18, col:28> 'int' '-'
-// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
-// CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} <<invalid sloc>> 'long' <IntegralCast>
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:29:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:30:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: `-FunctionDecl {{.*}} <line:34:1, line:41:1> line:34:6 test_five 'void (int, int, int)'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
-// CHECK-NEXT: `-CompoundStmt {{.*}} <col:37, line:41:1>
-// CHECK-NEXT: `-OMPTargetDirective {{.*}} <line:35:1, col:19>
-// CHECK-NEXT: |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:37:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:38:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: `-CapturedStmt {{.*}} <line:36:1, col:46>
-// CHECK-NEXT: |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-CapturedStmt {{.*}} <col:1, col:46>
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-OMPTeamsDistributeSimdDirective {{.*}} <col:1, col:46>
-// CHECK-NEXT: | | | | |-OMPCollapseClause {{.*}} <col:35, col:45>
-// CHECK-NEXT: | | | | | `-ConstantExpr {{.*}} <col:44> 'int'
-// CHECK-NEXT: | | | | | |-value: Int 2
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:44> 'int' 2
-// CHECK-NEXT: | | | | `-CapturedStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:37:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ForStmt {{.*}} <line:38:5, line:40:9>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:38:10, col:19>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-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
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-NullStmt {{.*}} <line:40:9>
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-simd.c:36:1) *const restrict'
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:37:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:38:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:39:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:37:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:38:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:35:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-simd.c:35:1) *const restrict'
-// CHECK-NEXT: | | | |-RecordDecl {{.*}} <line:36:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:37:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:38:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | | | `-FieldDecl {{.*}} <line:39:27> col:27 implicit 'int &'
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:37:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ForStmt {{.*}} <line:38:5, line:40:9>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:38:10, col:19>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:40:9>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-simd.c:36:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:37:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:38:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:39:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | | |-OMPCapturedExprDecl {{.*}} <line:37:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-OMPCapturedExprDecl {{.*}} <line:38:25> col:25 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-OMPCapturedExprDecl {{.*}} <line:37:3, <invalid sloc>> col:3 implicit used .capture_expr. 'long'
-// CHECK-NEXT: | | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'long' '-'
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:3, line:38:28> 'long' '*'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <line:37:3, col:26> 'long' <IntegralCast>
-// CHECK-NEXT: | | | | | `-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <line:38:5, col:28> 'long' <IntegralCast>
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:5, col:28> 'int' '/'
-// CHECK-NEXT: | | | | |-ParenExpr {{.*}} <col:5> 'int'
-// CHECK-NEXT: | | | | | `-BinaryOperator {{.*}} <col:25, col:5> 'int' '-'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | | `-ParenExpr {{.*}} <col:5> 'int'
-// CHECK-NEXT: | | | | | `-BinaryOperator {{.*}} <col:18, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:18, col:28> 'int' '-'
-// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <<invalid sloc>> 'long' <IntegralCast>
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:37:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:38:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:35:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-simd.c:35:1) *const restrict'
-// CHECK-NEXT: | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:37:23> col:23 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:38:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-FieldDecl {{.*}} <line:39:27> col:27 implicit 'int'
-// CHECK-NEXT: | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-OMPTeamsDistributeSimdDirective {{.*}} <line:36:1, col:46>
-// CHECK-NEXT: | | |-OMPCollapseClause {{.*}} <col:35, col:45>
-// CHECK-NEXT: | | | `-ConstantExpr {{.*}} <col:44> 'int'
-// CHECK-NEXT: | | | |-value: Int 2
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:44> 'int' 2
-// CHECK-NEXT: | | `-CapturedStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-ForStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:37:8, col:17>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ForStmt {{.*}} <line:38:5, line:40:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:38:10, col:19>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-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
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-NullStmt {{.*}} <line:40:9>
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-simd.c:36:1) *const restrict'
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:37:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:38:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <line:39:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:37:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:38:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:35:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-simd.c:35:1) *const restrict'
-// CHECK-NEXT: | |-RecordDecl {{.*}} <line:36:1> col:1 implicit struct definition
-// CHECK-NEXT: | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:37:23> col:23 implicit 'int &'
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:38:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | `-FieldDecl {{.*}} <line:39:27> col:27 implicit 'int &'
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:37:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ForStmt {{.*}} <line:38:5, line:40:9>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:38:10, col:19>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | |-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
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:40:9>
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute-simd.c:36:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:37:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:38:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:39:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | |-OMPCapturedExprDecl {{.*}} <line:37:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-OMPCapturedExprDecl {{.*}} <line:38:25> col:25 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-OMPCapturedExprDecl {{.*}} <line:37:3, <invalid sloc>> col:3 implicit used .capture_expr. 'long'
-// CHECK-NEXT: | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'long' '-'
-// CHECK-NEXT: | |-BinaryOperator {{.*}} <col:3, line:38:28> 'long' '*'
-// CHECK-NEXT: | | |-ImplicitCastExpr {{.*}} <line:37:3, col:26> 'long' <IntegralCast>
-// CHECK-NEXT: | | | `-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} <line:38:5, col:28> 'long' <IntegralCast>
-// CHECK-NEXT: | | `-BinaryOperator {{.*}} <col:5, col:28> 'int' '/'
-// CHECK-NEXT: | | |-ParenExpr {{.*}} <col:5> 'int'
-// CHECK-NEXT: | | | `-BinaryOperator {{.*}} <col:25, col:5> 'int' '-'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | `-ParenExpr {{.*}} <col:5> 'int'
-// CHECK-NEXT: | | | `-BinaryOperator {{.*}} <col:18, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:18, col:28> 'int' '-'
-// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
-// CHECK-NEXT: | `-ImplicitCastExpr {{.*}} <<invalid sloc>> 'long' <IntegralCast>
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:37:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:38:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
+// RUN: %clang_cc1 -triple x86_64-unknown-unknown -fopenmp -ast-dump %s | FileCheck --match-full-lines -implicit-check-not=openmp_structured_block %s
+
+void test_one(int x) {
+#pragma omp target
+#pragma omp teams distribute simd
+ for (int i = 0; i < x; i++)
+ ;
+}
+
+void test_two(int x, int y) {
+#pragma omp target
+#pragma omp teams distribute simd
+ for (int i = 0; i < x; i++)
+ for (int i = 0; i < y; i++)
+ ;
+}
+
+void test_three(int x, int y) {
+#pragma omp target
+#pragma omp teams distribute simd collapse(1)
+ for (int i = 0; i < x; i++)
+ for (int i = 0; i < y; i++)
+ ;
+}
+
+void test_four(int x, int y) {
+#pragma omp target
+#pragma omp teams distribute simd collapse(2)
+ for (int i = 0; i < x; i++)
+ for (int i = 0; i < y; i++)
+ ;
+}
+
+void test_five(int x, int y, int z) {
+#pragma omp target
+#pragma omp teams distribute simd collapse(2)
+ for (int i = 0; i < x; i++)
+ for (int i = 0; i < y; i++)
+ for (int i = 0; i < z; i++)
+ ;
+}
+
+// CHECK: TranslationUnitDecl 0x{{.+}} <<invalid sloc>> <invalid sloc>
+// CHECK: |-TypedefDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit __int128_t '__int128'
+// CHECK: | `-typeDetails: BuiltinType 0x{{.+}} '__int128'
+// CHECK: |-TypedefDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit __uint128_t 'unsigned __int128'
+// CHECK: | `-typeDetails: BuiltinType 0x{{.+}} 'unsigned __int128'
+// CHECK: |-TypedefDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit __NSConstantString 'struct __NSConstantString_tag'
+// CHECK: | `-typeDetails: RecordType 0x{{.+}} 'struct __NSConstantString_tag'
+// CHECK: | `-Record 0x{{.+}} '__NSConstantString_tag'
+// CHECK: |-TypedefDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit __builtin_ms_va_list 'char *'
+// CHECK: | `-typeDetails: PointerType 0x{{.+}} 'char *'
+// CHECK: | `-typeDetails: BuiltinType 0x{{.+}} 'char'
+// CHECK: |-TypedefDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit __builtin_va_list 'struct __va_list_tag[1]'
+// CHECK: | `-typeDetails: ConstantArrayType 0x{{.+}} 'struct __va_list_tag[1]' 1
+// CHECK: | `-typeDetails: RecordType 0x{{.+}} 'struct __va_list_tag'
+// CHECK: | `-Record 0x{{.+}} '__va_list_tag'
+// CHECK: |-FunctionDecl 0x{{.+}} <{{.*}} line:{{.*}}:{{.*}}> line:{{.*}}:{{.*}} test_one 'void (int)'
+// CHECK: | |-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used x 'int'
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | `-CompoundStmt 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | `-OMPTargetDirective 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | |-OMPFirstprivateClause 0x{{.+}} <<invalid sloc>> <implicit>
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-OMPTeamsDistributeSimdDirective 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | `-CapturedStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}}
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | |-RecordDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr 0x{{.+}} <<invalid sloc>> Implicit
+// CHECK: | | | | | `-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | |-ForStmt 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-OMPCapturedExprDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | `-OMPCapturedExprDecl 0x{{.+}} <col:{{.*}}, <invalid sloc>> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '-'
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '/'
+// CHECK: | | | | | |-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue OMPCapturedExpr 0x{{.+}} '.capture_expr.' 'int'
+// CHECK: | | | | | | `-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '+'
+// CHECK: | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr 0x{{.+}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int'
+// CHECK: | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .part_id. 'const int *const restrict'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .privates. 'void *const restrict'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const restrict' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'void (*const restrict)(void *const restrict, ...)' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'void (*)(void *const restrict, ...)'
+// CHECK: | | | | `-typeDetails: FunctionProtoType 0x{{.+}} 'void (void *const restrict, ...)' variadic cdecl
+// CHECK: | | | | |-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | | |-functionDetails: cdeclReturnType 0x{{.+}} 'void'
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const restrict' const __restrict
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | |-QualType 0x{{.+}} 'void (void *const restrict, ...)'
+// CHECK: | | | `-typeDetails: FunctionProtoType 0x{{.+}} 'void (void *const restrict, ...)' variadic cdecl
+// CHECK: | | | |-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | |-functionDetails: cdeclReturnType 0x{{.+}} 'void'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const restrict' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .task_t. 'void *const'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const' const
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | `-Record 0x{{.+}} ''
+// CHECK: | | |-RecordDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr 0x{{.+}} <<invalid sloc>> Implicit
+// CHECK: | | | `-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr 0x{{.+}} <<invalid sloc>> Implicit 36
+// CHECK: | | `-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-OMPTeamsDistributeSimdDirective 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | `-CapturedStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}}
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | `-Record 0x{{.+}} ''
+// CHECK: | | |-RecordDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr 0x{{.+}} <<invalid sloc>> Implicit
+// CHECK: | | | `-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-ForStmt 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-OMPCapturedExprDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-OMPCapturedExprDecl 0x{{.+}} <col:{{.*}}, <invalid sloc>> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '-'
+// CHECK: | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '/'
+// CHECK: | | | |-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue OMPCapturedExpr 0x{{.+}} '.capture_expr.' 'int'
+// CHECK: | | | | `-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '+'
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int'
+// CHECK: |-FunctionDecl 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}> line:{{.*}}:{{.*}} test_two 'void (int, int)'
+// CHECK: | |-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used x 'int'
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used y 'int'
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | `-CompoundStmt 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | `-OMPTargetDirective 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | |-OMPFirstprivateClause 0x{{.+}} <<invalid sloc>> <implicit>
+// CHECK: | | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-OMPTeamsDistributeSimdDirective 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | `-CapturedStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}}
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | |-RecordDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr 0x{{.+}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | | | | `-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | |-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-OMPCapturedExprDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | `-OMPCapturedExprDecl 0x{{.+}} <col:{{.*}}, <invalid sloc>> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '-'
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '/'
+// CHECK: | | | | | |-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue OMPCapturedExpr 0x{{.+}} '.capture_expr.' 'int'
+// CHECK: | | | | | | `-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '+'
+// CHECK: | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | | |-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr 0x{{.+}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int'
+// CHECK: | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .part_id. 'const int *const restrict'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .privates. 'void *const restrict'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const restrict' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'void (*const restrict)(void *const restrict, ...)' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'void (*)(void *const restrict, ...)'
+// CHECK: | | | | `-typeDetails: FunctionProtoType 0x{{.+}} 'void (void *const restrict, ...)' variadic cdecl
+// CHECK: | | | | |-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | | |-functionDetails: cdeclReturnType 0x{{.+}} 'void'
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const restrict' const __restrict
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | |-QualType 0x{{.+}} 'void (void *const restrict, ...)'
+// CHECK: | | | `-typeDetails: FunctionProtoType 0x{{.+}} 'void (void *const restrict, ...)' variadic cdecl
+// CHECK: | | | |-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | |-functionDetails: cdeclReturnType 0x{{.+}} 'void'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const restrict' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .task_t. 'void *const'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const' const
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | `-Record 0x{{.+}} ''
+// CHECK: | | |-RecordDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr 0x{{.+}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr 0x{{.+}} <<invalid sloc>> Implicit 36
+// CHECK: | | | `-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr 0x{{.+}} <<invalid sloc>> Implicit 36
+// CHECK: | | `-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-OMPTeamsDistributeSimdDirective 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | `-CapturedStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}}
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | `-Record 0x{{.+}} ''
+// CHECK: | | |-RecordDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr 0x{{.+}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | | `-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-OMPCapturedExprDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-OMPCapturedExprDecl 0x{{.+}} <col:{{.*}}, <invalid sloc>> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '-'
+// CHECK: | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '/'
+// CHECK: | | | |-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue OMPCapturedExpr 0x{{.+}} '.capture_expr.' 'int'
+// CHECK: | | | | `-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '+'
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | |-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int'
+// CHECK: | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int'
+// CHECK: |-FunctionDecl 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}> line:{{.*}}:{{.*}} test_three 'void (int, int)'
+// CHECK: | |-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used x 'int'
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used y 'int'
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | `-CompoundStmt 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | `-OMPTargetDirective 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | |-OMPFirstprivateClause 0x{{.+}} <<invalid sloc>> <implicit>
+// CHECK: | | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-OMPTeamsDistributeSimdDirective 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | |-OMPCollapseClause 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | `-ConstantExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | | |-value: Int 1
+// CHECK: | | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | | `-CapturedStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}}
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | |-RecordDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr 0x{{.+}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | | | | `-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | |-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-OMPCapturedExprDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | `-OMPCapturedExprDecl 0x{{.+}} <col:{{.*}}, <invalid sloc>> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '-'
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '/'
+// CHECK: | | | | | |-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue OMPCapturedExpr 0x{{.+}} '.capture_expr.' 'int'
+// CHECK: | | | | | | `-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '+'
+// CHECK: | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | | |-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr 0x{{.+}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int'
+// CHECK: | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .part_id. 'const int *const restrict'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .privates. 'void *const restrict'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const restrict' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'void (*const restrict)(void *const restrict, ...)' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'void (*)(void *const restrict, ...)'
+// CHECK: | | | | `-typeDetails: FunctionProtoType 0x{{.+}} 'void (void *const restrict, ...)' variadic cdecl
+// CHECK: | | | | |-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | | |-functionDetails: cdeclReturnType 0x{{.+}} 'void'
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const restrict' const __restrict
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | |-QualType 0x{{.+}} 'void (void *const restrict, ...)'
+// CHECK: | | | `-typeDetails: FunctionProtoType 0x{{.+}} 'void (void *const restrict, ...)' variadic cdecl
+// CHECK: | | | |-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | |-functionDetails: cdeclReturnType 0x{{.+}} 'void'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const restrict' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .task_t. 'void *const'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const' const
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | `-Record 0x{{.+}} ''
+// CHECK: | | |-RecordDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr 0x{{.+}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr 0x{{.+}} <<invalid sloc>> Implicit 36
+// CHECK: | | | `-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr 0x{{.+}} <<invalid sloc>> Implicit 36
+// CHECK: | | `-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-OMPTeamsDistributeSimdDirective 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | |-OMPCollapseClause 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | | | `-ConstantExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | |-value: Int 1
+// CHECK: | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | `-CapturedStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}}
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | `-Record 0x{{.+}} ''
+// CHECK: | | |-RecordDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr 0x{{.+}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | | `-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-OMPCapturedExprDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-OMPCapturedExprDecl 0x{{.+}} <col:{{.*}}, <invalid sloc>> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '-'
+// CHECK: | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '/'
+// CHECK: | | | |-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue OMPCapturedExpr 0x{{.+}} '.capture_expr.' 'int'
+// CHECK: | | | | `-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '+'
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | |-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int'
+// CHECK: | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int'
+// CHECK: |-FunctionDecl 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}> line:{{.*}}:{{.*}} test_four 'void (int, int)'
+// CHECK: | |-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used x 'int'
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used y 'int'
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | `-CompoundStmt 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | `-OMPTargetDirective 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | |-OMPFirstprivateClause 0x{{.+}} <<invalid sloc>> <implicit>
+// CHECK: | | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-OMPTeamsDistributeSimdDirective 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | |-OMPCollapseClause 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | `-ConstantExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | | |-value: Int 2
+// CHECK: | | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 2
+// CHECK: | | | | | `-CapturedStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}}
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | |-RecordDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr 0x{{.+}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | | | | `-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | |-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-OMPCapturedExprDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-OMPCapturedExprDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | `-OMPCapturedExprDecl 0x{{.+}} <line:{{.*}}:{{.*}}, <invalid sloc>> col:{{.*}} implicit used .capture_expr. 'long'
+// CHECK: | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'long' '-'
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}> 'long' '*'
+// CHECK: | | | | | |-ImplicitCastExpr 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'long' <IntegralCast>
+// CHECK: | | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '/'
+// CHECK: | | | | | | |-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue OMPCapturedExpr 0x{{.+}} '.capture_expr.' 'int'
+// CHECK: | | | | | | | `-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '+'
+// CHECK: | | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'long' <IntegralCast>
+// CHECK: | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '/'
+// CHECK: | | | | | |-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue OMPCapturedExpr 0x{{.+}} '.capture_expr.' 'int'
+// CHECK: | | | | | | `-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '+'
+// CHECK: | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | `-ImplicitCastExpr 0x{{.+}} <<invalid sloc>> 'long' <IntegralCast>
+// CHECK: | | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr 0x{{.+}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int'
+// CHECK: | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .part_id. 'const int *const restrict'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .privates. 'void *const restrict'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const restrict' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'void (*const restrict)(void *const restrict, ...)' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'void (*)(void *const restrict, ...)'
+// CHECK: | | | | `-typeDetails: FunctionProtoType 0x{{.+}} 'void (void *const restrict, ...)' variadic cdecl
+// CHECK: | | | | |-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | | |-functionDetails: cdeclReturnType 0x{{.+}} 'void'
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const restrict' const __restrict
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | |-QualType 0x{{.+}} 'void (void *const restrict, ...)'
+// CHECK: | | | `-typeDetails: FunctionProtoType 0x{{.+}} 'void (void *const restrict, ...)' variadic cdecl
+// CHECK: | | | |-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | |-functionDetails: cdeclReturnType 0x{{.+}} 'void'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const restrict' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .task_t. 'void *const'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const' const
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | `-Record 0x{{.+}} ''
+// CHECK: | | |-RecordDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr 0x{{.+}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr 0x{{.+}} <<invalid sloc>> Implicit 36
+// CHECK: | | | `-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr 0x{{.+}} <<invalid sloc>> Implicit 36
+// CHECK: | | `-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-OMPTeamsDistributeSimdDirective 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | |-OMPCollapseClause 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | | | `-ConstantExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | |-value: Int 2
+// CHECK: | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 2
+// CHECK: | | | `-CapturedStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}}
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | `-Record 0x{{.+}} ''
+// CHECK: | | |-RecordDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr 0x{{.+}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | | `-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-OMPCapturedExprDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-OMPCapturedExprDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-OMPCapturedExprDecl 0x{{.+}} <line:{{.*}}:{{.*}}, <invalid sloc>> col:{{.*}} implicit used .capture_expr. 'long'
+// CHECK: | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'long' '-'
+// CHECK: | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}> 'long' '*'
+// CHECK: | | | |-ImplicitCastExpr 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'long' <IntegralCast>
+// CHECK: | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '/'
+// CHECK: | | | | |-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue OMPCapturedExpr 0x{{.+}} '.capture_expr.' 'int'
+// CHECK: | | | | | `-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '+'
+// CHECK: | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'long' <IntegralCast>
+// CHECK: | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '/'
+// CHECK: | | | |-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue OMPCapturedExpr 0x{{.+}} '.capture_expr.' 'int'
+// CHECK: | | | | `-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '+'
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | `-ImplicitCastExpr 0x{{.+}} <<invalid sloc>> 'long' <IntegralCast>
+// CHECK: | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int'
+// CHECK: | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int'
+// CHECK: `-FunctionDecl 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}> line:{{.*}}:{{.*}} test_five 'void (int, int, int)'
+// CHECK: |-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used x 'int'
+// CHECK: | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: |-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used y 'int'
+// CHECK: | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: |-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used z 'int'
+// CHECK: | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: `-CompoundStmt 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: `-OMPTargetDirective 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: |-OMPFirstprivateClause 0x{{.+}} <<invalid sloc>> <implicit>
+// CHECK: | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: `-CapturedStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-CapturedStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-OMPTeamsDistributeSimdDirective 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | | | |-OMPCollapseClause 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | `-ConstantExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | |-value: Int 2
+// CHECK: | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 2
+// CHECK: | | | | `-CapturedStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | |-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}}
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | |-RecordDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit struct definition
+// CHECK: | | | | |-attrDetails: CapturedRecordAttr 0x{{.+}} <<invalid sloc>> Implicit
+// CHECK: | | | | |-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | | | |-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | | | `-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | |-OMPCapturedExprDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-OMPCapturedExprDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-OMPCapturedExprDecl 0x{{.+}} <line:{{.*}}:{{.*}}, <invalid sloc>> col:{{.*}} implicit used .capture_expr. 'long'
+// CHECK: | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'long' '-'
+// CHECK: | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}> 'long' '*'
+// CHECK: | | | | |-ImplicitCastExpr 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'long' <IntegralCast>
+// CHECK: | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '/'
+// CHECK: | | | | | |-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue OMPCapturedExpr 0x{{.+}} '.capture_expr.' 'int'
+// CHECK: | | | | | | `-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '+'
+// CHECK: | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | `-ImplicitCastExpr 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'long' <IntegralCast>
+// CHECK: | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '/'
+// CHECK: | | | | |-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue OMPCapturedExpr 0x{{.+}} '.capture_expr.' 'int'
+// CHECK: | | | | | `-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '+'
+// CHECK: | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <<invalid sloc>> 'long' <IntegralCast>
+// CHECK: | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-attrDetails: AlwaysInlineAttr 0x{{.+}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int'
+// CHECK: | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .part_id. 'const int *const restrict'
+// CHECK: | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .privates. 'void *const restrict'
+// CHECK: | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const restrict' const __restrict
+// CHECK: | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | |-qualTypeDetail: QualType 0x{{.+}} 'void (*const restrict)(void *const restrict, ...)' const __restrict
+// CHECK: | | | `-typeDetails: PointerType 0x{{.+}} 'void (*)(void *const restrict, ...)'
+// CHECK: | | | `-typeDetails: FunctionProtoType 0x{{.+}} 'void (void *const restrict, ...)' variadic cdecl
+// CHECK: | | | |-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | |-functionDetails: cdeclReturnType 0x{{.+}} 'void'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const restrict' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | |-QualType 0x{{.+}} 'void (void *const restrict, ...)'
+// CHECK: | | `-typeDetails: FunctionProtoType 0x{{.+}} 'void (void *const restrict, ...)' variadic cdecl
+// CHECK: | | |-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | |-functionDetails: cdeclReturnType 0x{{.+}} 'void'
+// CHECK: | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const restrict' const __restrict
+// CHECK: | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .task_t. 'void *const'
+// CHECK: | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const' const
+// CHECK: | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | `-Record 0x{{.+}} ''
+// CHECK: | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | `-Record 0x{{.+}} ''
+// CHECK: | |-RecordDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit struct definition
+// CHECK: | | |-attrDetails: CapturedRecordAttr 0x{{.+}} <<invalid sloc>> Implicit
+// CHECK: | | |-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr 0x{{.+}} <<invalid sloc>> Implicit 36
+// CHECK: | | |-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr 0x{{.+}} <<invalid sloc>> Implicit 36
+// CHECK: | | `-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int'
+// CHECK: | | `-attrDetails: OMPCaptureKindAttr 0x{{.+}} <<invalid sloc>> Implicit 36
+// CHECK: | `-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-OMPTeamsDistributeSimdDirective 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | |-OMPCollapseClause 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | | `-ConstantExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | |-value: Int 2
+// CHECK: | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 2
+// CHECK: | | `-CapturedStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}}
+// CHECK: | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | `-Record 0x{{.+}} ''
+// CHECK: | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | `-Record 0x{{.+}} ''
+// CHECK: | |-RecordDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit struct definition
+// CHECK: | | |-attrDetails: CapturedRecordAttr 0x{{.+}} <<invalid sloc>> Implicit
+// CHECK: | | |-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | |-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | `-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | `-Record 0x{{.+}} ''
+// CHECK: | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-OMPCapturedExprDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-OMPCapturedExprDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-OMPCapturedExprDecl 0x{{.+}} <line:{{.*}}:{{.*}}, <invalid sloc>> col:{{.*}} implicit used .capture_expr. 'long'
+// CHECK: | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'long' '-'
+// CHECK: | |-BinaryOperator 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}> 'long' '*'
+// CHECK: | | |-ImplicitCastExpr 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'long' <IntegralCast>
+// CHECK: | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '/'
+// CHECK: | | | |-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue OMPCapturedExpr 0x{{.+}} '.capture_expr.' 'int'
+// CHECK: | | | | `-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '+'
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | `-ImplicitCastExpr 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'long' <IntegralCast>
+// CHECK: | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '/'
+// CHECK: | | |-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue OMPCapturedExpr 0x{{.+}} '.capture_expr.' 'int'
+// CHECK: | | | `-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '+'
+// CHECK: | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | `-ImplicitCastExpr 0x{{.+}} <<invalid sloc>> 'long' <IntegralCast>
+// CHECK: | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int'
+// CHECK: |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int'
+// CHECK: `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'z' 'int'
\ No newline at end of file
diff --git a/clang/test/AST/ast-dump-openmp-teams-distribute.c b/clang/test/AST/ast-dump-openmp-teams-distribute.c
index feb802e3e4099..64f55c88786a2 100644
--- a/clang/test/AST/ast-dump-openmp-teams-distribute.c
+++ b/clang/test/AST/ast-dump-openmp-teams-distribute.c
@@ -1,1223 +1,1941 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -fopenmp -ast-dump %s | FileCheck --match-full-lines -implicit-check-not=openmp_structured_block %s
-
-void test_one(int x) {
-#pragma omp target
-#pragma omp teams distribute
- for (int i = 0; i < x; i++)
- ;
-}
-
-void test_two(int x, int y) {
-#pragma omp target
-#pragma omp teams distribute
- for (int i = 0; i < x; i++)
- for (int i = 0; i < y; i++)
- ;
-}
-
-void test_three(int x, int y) {
-#pragma omp target
-#pragma omp teams distribute collapse(1)
- for (int i = 0; i < x; i++)
- for (int i = 0; i < y; i++)
- ;
-}
-
-void test_four(int x, int y) {
-#pragma omp target
-#pragma omp teams distribute collapse(2)
- for (int i = 0; i < x; i++)
- for (int i = 0; i < y; i++)
- ;
-}
-
-void test_five(int x, int y, int z) {
-#pragma omp target
-#pragma omp teams distribute collapse(2)
- for (int i = 0; i < x; i++)
- for (int i = 0; i < y; i++)
- for (int i = 0; i < z; i++)
- ;
-}
-
-// CHECK: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>
-// CHECK: |-FunctionDecl {{.*}} <{{.*}}ast-dump-openmp-teams-distribute.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>
-// CHECK-NEXT: | `-OMPTargetDirective {{.*}} <line:4:1, col:19>
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:6:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:5:1, col:29>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <col:1, col:29>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-OMPTeamsDistributeDirective {{.*}} <col:1, col:29>
-// 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>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:6:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute.c:5:1) *const restrict'
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:6:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute.c:4:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <line:5:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:6:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <col:3, line:7:5>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:6:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute.c:5:1) *const restrict'
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:6:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-OMPCapturedExprDecl {{.*}} <col:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-OMPCapturedExprDecl {{.*}} <col:3, <invalid sloc>> col:3 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'int' '-'
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute.c:4:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:6:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-OMPTeamsDistributeDirective {{.*}} <line:5:1, col:29>
-// 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>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:6:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute.c:5:1) *const restrict'
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:6:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute.c:4:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <line:5:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:6:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-ForStmt {{.*}} <col:3, line:7:5>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:6:8, col:17>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute.c:5:1) *const restrict'
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <line:6:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | |-OMPCapturedExprDecl {{.*}} <col:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-OMPCapturedExprDecl {{.*}} <col:3, <invalid sloc>> col:3 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'int' '-'
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:10:1, line:16:1> line:10:6 test_two 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:29, line:16:1>
-// CHECK-NEXT: | `-OMPTargetDirective {{.*}} <line:11:1, col:19>
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:13:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:12:1, col:29>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <col:1, col:29>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-OMPTeamsDistributeDirective {{.*}} <col:1, col:29>
-// 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>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:13:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}} <line:15:7>
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute.c:12:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:13:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:14:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:13:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:11:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute.c:11:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <line:12:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:13:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:14:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <line:13:3, line:15:7>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:13:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-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
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-NullStmt {{.*}} <line:15:7>
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute.c:12:1) *const restrict'
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:13:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:14:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-OMPCapturedExprDecl {{.*}} <line:13:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-OMPCapturedExprDecl {{.*}} <col:3, <invalid sloc>> col:3 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'int' '-'
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:11:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute.c:11:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:13:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:14:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-OMPTeamsDistributeDirective {{.*}} <line:12:1, col:29>
-// 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>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:13:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:15:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute.c:12:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:13:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:14:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:13:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:11:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute.c:11:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <line:12:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:13:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:14:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-ForStmt {{.*}} <line:13:3, line:15:7>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:13:8, col:17>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-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
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-NullStmt {{.*}} <line:15:7>
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute.c:12:1) *const restrict'
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:13:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <line:14:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | |-OMPCapturedExprDecl {{.*}} <line:13:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-OMPCapturedExprDecl {{.*}} <col:3, <invalid sloc>> col:3 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'int' '-'
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:18:1, line:24:1> line:18:6 test_three 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:31, line:24:1>
-// CHECK-NEXT: | `-OMPTargetDirective {{.*}} <line:19:1, col:19>
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:21:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:20:1, col:41>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <col:1, col:41>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-OMPTeamsDistributeDirective {{.*}} <col:1, col:41>
-// CHECK-NEXT: | | | | | |-OMPCollapseClause {{.*}} <col:30, col:40>
-// CHECK-NEXT: | | | | | | `-ConstantExpr {{.*}} <col:39> 'int'
-// CHECK-NEXT: | | | | | | |-value: Int 1
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:39> 'int' 1
-// CHECK-NEXT: | | | | | `-CapturedStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:21:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | | |-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
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-NullStmt {{.*}} <line:23:7>
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute.c:20:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:21:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:22:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:21:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:19:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute.c:19:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <line:20:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:21:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:22:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:21:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-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
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-NullStmt {{.*}} <line:23:7>
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute.c:20:1) *const restrict'
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:21:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:22:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-OMPCapturedExprDecl {{.*}} <line:21:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-OMPCapturedExprDecl {{.*}} <col:3, <invalid sloc>> col:3 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'int' '-'
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:19:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute.c:19:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:21:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:22:25> col:25 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-OMPTeamsDistributeDirective {{.*}} <line:20:1, col:41>
-// CHECK-NEXT: | | | |-OMPCollapseClause {{.*}} <col:30, col:40>
-// CHECK-NEXT: | | | | `-ConstantExpr {{.*}} <col:39> 'int'
-// CHECK-NEXT: | | | | |-value: Int 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:39> 'int' 1
-// CHECK-NEXT: | | | `-CapturedStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:21:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:23:7>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute.c:20:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:21:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:22:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:21:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:19:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute.c:19:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <line:20:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:21:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:22:25> col:25 implicit 'int &'
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-ForStmt {{.*}} <line:21:3, line:23:7>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:21:8, col:17>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-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
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-NullStmt {{.*}} <line:23:7>
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute.c:20:1) *const restrict'
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:21:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <line:22:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | |-OMPCapturedExprDecl {{.*}} <line:21:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-OMPCapturedExprDecl {{.*}} <col:3, <invalid sloc>> col:3 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'int' '-'
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:26:1, line:32:1> line:26:6 test_four 'void (int, int)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:30, line:32:1>
-// CHECK-NEXT: | `-OMPTargetDirective {{.*}} <line:27:1, col:19>
-// CHECK-NEXT: | |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:29:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:30:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:28:1, col:41>
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-CapturedStmt {{.*}} <col:1, col:41>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-OMPTeamsDistributeDirective {{.*}} <col:1, col:41>
-// CHECK-NEXT: | | | | | |-OMPCollapseClause {{.*}} <col:30, col:40>
-// CHECK-NEXT: | | | | | | `-ConstantExpr {{.*}} <col:39> 'int'
-// CHECK-NEXT: | | | | | | |-value: Int 2
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:39> 'int' 2
-// CHECK-NEXT: | | | | | `-CapturedStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | | |-ForStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:29:8, col:17>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ForStmt {{.*}} <line:30:5, line:31:7>
-// CHECK-NEXT: | | | | | | | |-DeclStmt {{.*}} <line:30:10, col:19>
-// CHECK-NEXT: | | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute.c:28:1) *const restrict'
-// CHECK-NEXT: | | | | | | |-VarDecl {{.*}} <line:29:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <line:30:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-DeclRefExpr {{.*}} <line:29:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <line:30:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:27:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute.c:27:1) *const restrict'
-// CHECK-NEXT: | | | | |-RecordDecl {{.*}} <line:28:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | | |-FieldDecl {{.*}} <line:29:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | | | | `-FieldDecl {{.*}} <line:30:5> col:5 implicit 'int &'
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:29:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ForStmt {{.*}} <line:30:5, line:31:7>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:30:10, col:19>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute.c:28:1) *const restrict'
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:29:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:30:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-OMPCapturedExprDecl {{.*}} <line:29:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-OMPCapturedExprDecl {{.*}} <line:30:25> col:25 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-OMPCapturedExprDecl {{.*}} <line:29:3, <invalid sloc>> col:3 implicit used .capture_expr. 'long'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'long' '-'
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:3, line:30:28> 'long' '*'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <line:29:3, col:26> 'long' <IntegralCast>
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <line:30:5, col:28> 'long' <IntegralCast>
-// CHECK-NEXT: | | | | | `-BinaryOperator {{.*}} <col:5, col:28> 'int' '/'
-// CHECK-NEXT: | | | | | |-ParenExpr {{.*}} <col:5> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:25, col:5> 'int' '-'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | | | `-ParenExpr {{.*}} <col:5> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:18, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:18, col:28> 'int' '-'
-// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <<invalid sloc>> 'long' <IntegralCast>
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:29:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:30:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:27:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute.c:27:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:29:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:30:5> col:5 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-OMPTeamsDistributeDirective {{.*}} <line:28:1, col:41>
-// CHECK-NEXT: | | | |-OMPCollapseClause {{.*}} <col:30, col:40>
-// CHECK-NEXT: | | | | `-ConstantExpr {{.*}} <col:39> 'int'
-// CHECK-NEXT: | | | | |-value: Int 2
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:39> 'int' 2
-// CHECK-NEXT: | | | `-CapturedStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:29:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ForStmt {{.*}} <line:30:5, line:31:7>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:30:10, col:19>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute.c:28:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:29:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:30:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-DeclRefExpr {{.*}} <line:29:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <line:30:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:27:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute.c:27:1) *const restrict'
-// CHECK-NEXT: | | |-RecordDecl {{.*}} <line:28:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | |-FieldDecl {{.*}} <line:29:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | | `-FieldDecl {{.*}} <line:30:5> col:5 implicit 'int &'
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-ForStmt {{.*}} <line:29:3, line:31:7>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:29:8, col:17>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ForStmt {{.*}} <line:30:5, line:31:7>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:30:10, col:19>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute.c:28:1) *const restrict'
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:29:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <line:30:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | |-OMPCapturedExprDecl {{.*}} <line:29:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-OMPCapturedExprDecl {{.*}} <line:30:25> col:25 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-OMPCapturedExprDecl {{.*}} <line:29:3, <invalid sloc>> col:3 implicit used .capture_expr. 'long'
-// CHECK-NEXT: | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'long' '-'
-// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:3, line:30:28> 'long' '*'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <line:29:3, col:26> 'long' <IntegralCast>
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <line:30:5, col:28> 'long' <IntegralCast>
-// CHECK-NEXT: | | | `-BinaryOperator {{.*}} <col:5, col:28> 'int' '/'
-// CHECK-NEXT: | | | |-ParenExpr {{.*}} <col:5> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:25, col:5> 'int' '-'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | `-ParenExpr {{.*}} <col:5> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:18, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:18, col:28> 'int' '-'
-// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
-// CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} <<invalid sloc>> 'long' <IntegralCast>
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:29:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:30:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: `-FunctionDecl {{.*}} <line:34:1, line:41:1> line:34:6 test_five 'void (int, int, int)'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
-// CHECK-NEXT: `-CompoundStmt {{.*}} <col:37, line:41:1>
-// CHECK-NEXT: `-OMPTargetDirective {{.*}} <line:35:1, col:19>
-// CHECK-NEXT: |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:37:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:38:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: `-CapturedStmt {{.*}} <line:36:1, col:41>
-// CHECK-NEXT: |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-CapturedStmt {{.*}} <col:1, col:41>
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-OMPTeamsDistributeDirective {{.*}} <col:1, col:41>
-// CHECK-NEXT: | | | | |-OMPCollapseClause {{.*}} <col:30, col:40>
-// CHECK-NEXT: | | | | | `-ConstantExpr {{.*}} <col:39> 'int'
-// CHECK-NEXT: | | | | | |-value: Int 2
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:39> 'int' 2
-// CHECK-NEXT: | | | | `-CapturedStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | | |-ForStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:37:8, col:17>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ForStmt {{.*}} <line:38:5, line:40:9>
-// CHECK-NEXT: | | | | | | |-DeclStmt {{.*}} <line:38:10, col:19>
-// CHECK-NEXT: | | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | | |-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
-// CHECK-NEXT: | | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-NullStmt {{.*}} <line:40:9>
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute.c:36:1) *const restrict'
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:37:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-VarDecl {{.*}} <line:38:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <line:39:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:37:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-DeclRefExpr {{.*}} <line:38:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:35:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute.c:35:1) *const restrict'
-// CHECK-NEXT: | | | |-RecordDecl {{.*}} <line:36:1> col:1 implicit struct definition
-// CHECK-NEXT: | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:37:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | | | |-FieldDecl {{.*}} <line:38:5> col:5 implicit 'int &'
-// CHECK-NEXT: | | | | `-FieldDecl {{.*}} <line:39:27> col:27 implicit 'int &'
-// CHECK-NEXT: | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | | |-ForStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:37:8, col:17>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ForStmt {{.*}} <line:38:5, line:40:9>
-// CHECK-NEXT: | | | | | |-DeclStmt {{.*}} <line:38:10, col:19>
-// CHECK-NEXT: | | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | | |-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
-// CHECK-NEXT: | | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-NullStmt {{.*}} <line:40:9>
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute.c:36:1) *const restrict'
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:37:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-VarDecl {{.*}} <line:38:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <line:39:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | | |-OMPCapturedExprDecl {{.*}} <line:37:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-OMPCapturedExprDecl {{.*}} <line:38:25> col:25 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | `-OMPCapturedExprDecl {{.*}} <line:37:3, <invalid sloc>> col:3 implicit used .capture_expr. 'long'
-// CHECK-NEXT: | | | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'long' '-'
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:3, line:38:28> 'long' '*'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <line:37:3, col:26> 'long' <IntegralCast>
-// CHECK-NEXT: | | | | | `-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <line:38:5, col:28> 'long' <IntegralCast>
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:5, col:28> 'int' '/'
-// CHECK-NEXT: | | | | |-ParenExpr {{.*}} <col:5> 'int'
-// CHECK-NEXT: | | | | | `-BinaryOperator {{.*}} <col:25, col:5> 'int' '-'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | | `-ParenExpr {{.*}} <col:5> 'int'
-// CHECK-NEXT: | | | | | `-BinaryOperator {{.*}} <col:18, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} <col:18, col:28> 'int' '-'
-// CHECK-NEXT: | | | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
-// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <<invalid sloc>> 'long' <IntegralCast>
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:37:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:38:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:35:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute.c:35:1) *const restrict'
-// CHECK-NEXT: | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:37:3> col:3 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:38:5> col:5 implicit 'int'
-// CHECK-NEXT: | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | | `-FieldDecl {{.*}} <line:39:27> col:27 implicit 'int'
-// CHECK-NEXT: | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
-// CHECK-NEXT: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-OMPTeamsDistributeDirective {{.*}} <line:36:1, col:41>
-// CHECK-NEXT: | | |-OMPCollapseClause {{.*}} <col:30, col:40>
-// CHECK-NEXT: | | | `-ConstantExpr {{.*}} <col:39> 'int'
-// CHECK-NEXT: | | | |-value: Int 2
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:39> 'int' 2
-// CHECK-NEXT: | | `-CapturedStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | | |-ForStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:37:8, col:17>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ForStmt {{.*}} <line:38:5, line:40:9>
-// CHECK-NEXT: | | | | |-DeclStmt {{.*}} <line:38:10, col:19>
-// CHECK-NEXT: | | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | | |-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
-// CHECK-NEXT: | | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-NullStmt {{.*}} <line:40:9>
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute.c:36:1) *const restrict'
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:37:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-VarDecl {{.*}} <line:38:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | `-VarDecl {{.*}} <line:39:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:37:3> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | |-DeclRefExpr {{.*}} <line:38:5> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:35:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute.c:35:1) *const restrict'
-// CHECK-NEXT: | |-RecordDecl {{.*}} <line:36:1> col:1 implicit struct definition
-// CHECK-NEXT: | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:37:3> col:3 implicit 'int &'
-// CHECK-NEXT: | | |-FieldDecl {{.*}} <line:38:5> col:5 implicit 'int &'
-// CHECK-NEXT: | | `-FieldDecl {{.*}} <line:39:27> col:27 implicit 'int &'
-// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | | |-ForStmt {{.*}} <line:37:3, line:40:9>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:37:8, col:17>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-ForStmt {{.*}} <line:38:5, line:40:9>
-// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:38:10, col:19>
-// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// 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: | | | |-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
-// CHECK-NEXT: | | | |-<<<NULL>>>
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
-// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:40:9>
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams-distribute.c:36:1) *const restrict'
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:37:8, col:16> col:12 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | |-VarDecl {{.*}} <line:38:10, col:18> col:14 used i 'int' cinit
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | `-VarDecl {{.*}} <line:39:12, col:20> col:16 used i 'int' cinit
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:20> 'int' 0
-// CHECK-NEXT: | |-OMPCapturedExprDecl {{.*}} <line:37:23> col:23 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | |-OMPCapturedExprDecl {{.*}} <line:38:25> col:25 implicit used .capture_expr. 'int'
-// CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture
-// CHECK-NEXT: | `-OMPCapturedExprDecl {{.*}} <line:37:3, <invalid sloc>> col:3 implicit used .capture_expr. 'long'
-// CHECK-NEXT: | `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'long' '-'
-// CHECK-NEXT: | |-BinaryOperator {{.*}} <col:3, line:38:28> 'long' '*'
-// CHECK-NEXT: | | |-ImplicitCastExpr {{.*}} <line:37:3, col:26> 'long' <IntegralCast>
-// CHECK-NEXT: | | | `-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
-// CHECK-NEXT: | | | |-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
-// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | | `-ParenExpr {{.*}} <col:3> 'int'
-// CHECK-NEXT: | | | | `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
-// CHECK-NEXT: | | | | | |-IntegerLiteral {{.*}} <col:16> 'int' 0
-// CHECK-NEXT: | | | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:26> 'int' 1
-// CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} <line:38:5, col:28> 'long' <IntegralCast>
-// CHECK-NEXT: | | `-BinaryOperator {{.*}} <col:5, col:28> 'int' '/'
-// CHECK-NEXT: | | |-ParenExpr {{.*}} <col:5> 'int'
-// CHECK-NEXT: | | | `-BinaryOperator {{.*}} <col:25, col:5> 'int' '-'
-// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
-// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
-// CHECK-NEXT: | | | `-ParenExpr {{.*}} <col:5> 'int'
-// CHECK-NEXT: | | | `-BinaryOperator {{.*}} <col:18, <invalid sloc>> 'int' '+'
-// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:18, col:28> 'int' '-'
-// CHECK-NEXT: | | | | |-IntegerLiteral {{.*}} <col:18> 'int' 0
-// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
-// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:28> 'int' 1
-// CHECK-NEXT: | `-ImplicitCastExpr {{.*}} <<invalid sloc>> 'long' <IntegralCast>
-// CHECK-NEXT: | `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
-// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:37:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:38:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
-// CHECK-NEXT: `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
+// RUN: %clang_cc1 -triple x86_64-unknown-unknown -fopenmp -ast-dump %s | FileCheck --match-full-lines -implicit-check-not=openmp_structured_block %s
+
+void test_one(int x) {
+#pragma omp target
+#pragma omp teams distribute
+ for (int i = 0; i < x; i++)
+ ;
+}
+
+void test_two(int x, int y) {
+#pragma omp target
+#pragma omp teams distribute
+ for (int i = 0; i < x; i++)
+ for (int i = 0; i < y; i++)
+ ;
+}
+
+void test_three(int x, int y) {
+#pragma omp target
+#pragma omp teams distribute collapse(1)
+ for (int i = 0; i < x; i++)
+ for (int i = 0; i < y; i++)
+ ;
+}
+
+void test_four(int x, int y) {
+#pragma omp target
+#pragma omp teams distribute collapse(2)
+ for (int i = 0; i < x; i++)
+ for (int i = 0; i < y; i++)
+ ;
+}
+
+void test_five(int x, int y, int z) {
+#pragma omp target
+#pragma omp teams distribute collapse(2)
+ for (int i = 0; i < x; i++)
+ for (int i = 0; i < y; i++)
+ for (int i = 0; i < z; i++)
+ ;
+}
+// CHECK: TranslationUnitDecl 0x{{.+}} <<invalid sloc>> <invalid sloc>
+// CHECK: |-TypedefDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit __int128_t '__int128'
+// CHECK: | `-typeDetails: BuiltinType 0x{{.+}} '__int128'
+// CHECK: |-TypedefDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit __uint128_t 'unsigned __int128'
+// CHECK: | `-typeDetails: BuiltinType 0x{{.+}} 'unsigned __int128'
+// CHECK: |-TypedefDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit __NSConstantString 'struct __NSConstantString_tag'
+// CHECK: | `-typeDetails: RecordType 0x{{.+}} 'struct __NSConstantString_tag'
+// CHECK: | `-Record 0x{{.+}} '__NSConstantString_tag'
+// CHECK: |-TypedefDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit __builtin_ms_va_list 'char *'
+// CHECK: | `-typeDetails: PointerType 0x{{.+}} 'char *'
+// CHECK: | `-typeDetails: BuiltinType 0x{{.+}} 'char'
+// CHECK: |-TypedefDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit __builtin_va_list 'struct __va_list_tag[1]'
+// CHECK: | `-typeDetails: ConstantArrayType 0x{{.+}} 'struct __va_list_tag[1]' 1
+// CHECK: | `-typeDetails: RecordType 0x{{.+}} 'struct __va_list_tag'
+// CHECK: | `-Record 0x{{.+}} '__va_list_tag'
+// CHECK: |-FunctionDecl 0x{{.+}} <{{.*}} line:{{.*}}:{{.*}}> line:{{.*}}:{{.*}} test_one 'void (int)'
+// CHECK: | |-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used x 'int'
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | `-CompoundStmt 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | `-OMPTargetDirective 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | |-OMPFirstprivateClause 0x{{.+}} <<invalid sloc>> <implicit>
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-OMPTeamsDistributeDirective 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | `-CapturedStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}}
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | |-RecordDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr 0x{{.+}} <<invalid sloc>> Implicit
+// CHECK: | | | | | `-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | |-ForStmt 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-OMPCapturedExprDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | `-OMPCapturedExprDecl 0x{{.+}} <col:{{.*}}, <invalid sloc>> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '-'
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '/'
+// CHECK: | | | | | |-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue OMPCapturedExpr 0x{{.+}} '.capture_expr.' 'int'
+// CHECK: | | | | | | `-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '+'
+// CHECK: | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr 0x{{.+}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int'
+// CHECK: | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .part_id. 'const int *const restrict'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .privates. 'void *const restrict'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const restrict' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'void (*const restrict)(void *const restrict, ...)' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'void (*)(void *const restrict, ...)'
+// CHECK: | | | | `-typeDetails: FunctionProtoType 0x{{.+}} 'void (void *const restrict, ...)' variadic cdecl
+// CHECK: | | | | |-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | | |-functionDetails: cdeclReturnType 0x{{.+}} 'void'
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const restrict' const __restrict
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | |-QualType 0x{{.+}} 'void (void *const restrict, ...)'
+// CHECK: | | | `-typeDetails: FunctionProtoType 0x{{.+}} 'void (void *const restrict, ...)' variadic cdecl
+// CHECK: | | | |-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | |-functionDetails: cdeclReturnType 0x{{.+}} 'void'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const restrict' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .task_t. 'void *const'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const' const
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | `-Record 0x{{.+}} ''
+// CHECK: | | |-RecordDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr 0x{{.+}} <<invalid sloc>> Implicit
+// CHECK: | | | `-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr 0x{{.+}} <<invalid sloc>> Implicit 36
+// CHECK: | | `-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-OMPTeamsDistributeDirective 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | `-CapturedStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}}
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | `-Record 0x{{.+}} ''
+// CHECK: | | |-RecordDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr 0x{{.+}} <<invalid sloc>> Implicit
+// CHECK: | | | `-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-ForStmt 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-OMPCapturedExprDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-OMPCapturedExprDecl 0x{{.+}} <col:{{.*}}, <invalid sloc>> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '-'
+// CHECK: | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '/'
+// CHECK: | | | |-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue OMPCapturedExpr 0x{{.+}} '.capture_expr.' 'int'
+// CHECK: | | | | `-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '+'
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int'
+// CHECK: |-FunctionDecl 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}> line:{{.*}}:{{.*}} test_two 'void (int, int)'
+// CHECK: | |-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used x 'int'
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used y 'int'
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | `-CompoundStmt 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | `-OMPTargetDirective 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | |-OMPFirstprivateClause 0x{{.+}} <<invalid sloc>> <implicit>
+// CHECK: | | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-OMPTeamsDistributeDirective 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | `-CapturedStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}}
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | |-RecordDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr 0x{{.+}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | | | | `-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | |-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-OMPCapturedExprDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | `-OMPCapturedExprDecl 0x{{.+}} <col:{{.*}}, <invalid sloc>> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '-'
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '/'
+// CHECK: | | | | | |-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue OMPCapturedExpr 0x{{.+}} '.capture_expr.' 'int'
+// CHECK: | | | | | | `-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '+'
+// CHECK: | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | | |-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr 0x{{.+}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int'
+// CHECK: | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .part_id. 'const int *const restrict'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .privates. 'void *const restrict'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const restrict' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'void (*const restrict)(void *const restrict, ...)' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'void (*)(void *const restrict, ...)'
+// CHECK: | | | | `-typeDetails: FunctionProtoType 0x{{.+}} 'void (void *const restrict, ...)' variadic cdecl
+// CHECK: | | | | |-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | | |-functionDetails: cdeclReturnType 0x{{.+}} 'void'
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const restrict' const __restrict
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | |-QualType 0x{{.+}} 'void (void *const restrict, ...)'
+// CHECK: | | | `-typeDetails: FunctionProtoType 0x{{.+}} 'void (void *const restrict, ...)' variadic cdecl
+// CHECK: | | | |-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | |-functionDetails: cdeclReturnType 0x{{.+}} 'void'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const restrict' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .task_t. 'void *const'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const' const
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | `-Record 0x{{.+}} ''
+// CHECK: | | |-RecordDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr 0x{{.+}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr 0x{{.+}} <<invalid sloc>> Implicit 36
+// CHECK: | | | `-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr 0x{{.+}} <<invalid sloc>> Implicit 36
+// CHECK: | | `-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-OMPTeamsDistributeDirective 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | `-CapturedStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}}
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | `-Record 0x{{.+}} ''
+// CHECK: | | |-RecordDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr 0x{{.+}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | | `-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-OMPCapturedExprDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-OMPCapturedExprDecl 0x{{.+}} <col:{{.*}}, <invalid sloc>> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '-'
+// CHECK: | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '/'
+// CHECK: | | | |-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue OMPCapturedExpr 0x{{.+}} '.capture_expr.' 'int'
+// CHECK: | | | | `-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '+'
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | |-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int'
+// CHECK: | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int'
+// CHECK: |-FunctionDecl 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}> line:{{.*}}:{{.*}} test_three 'void (int, int)'
+// CHECK: | |-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used x 'int'
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used y 'int'
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | `-CompoundStmt 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | `-OMPTargetDirective 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | |-OMPFirstprivateClause 0x{{.+}} <<invalid sloc>> <implicit>
+// CHECK: | | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-OMPTeamsDistributeDirective 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | |-OMPCollapseClause 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | `-ConstantExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | | |-value: Int 1
+// CHECK: | | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | | `-CapturedStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}}
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | |-RecordDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr 0x{{.+}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | | | | `-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | |-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-OMPCapturedExprDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | `-OMPCapturedExprDecl 0x{{.+}} <col:{{.*}}, <invalid sloc>> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '-'
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '/'
+// CHECK: | | | | | |-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue OMPCapturedExpr 0x{{.+}} '.capture_expr.' 'int'
+// CHECK: | | | | | | `-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '+'
+// CHECK: | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | | |-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr 0x{{.+}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int'
+// CHECK: | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .part_id. 'const int *const restrict'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .privates. 'void *const restrict'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const restrict' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'void (*const restrict)(void *const restrict, ...)' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'void (*)(void *const restrict, ...)'
+// CHECK: | | | | `-typeDetails: FunctionProtoType 0x{{.+}} 'void (void *const restrict, ...)' variadic cdecl
+// CHECK: | | | | |-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | | |-functionDetails: cdeclReturnType 0x{{.+}} 'void'
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const restrict' const __restrict
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | |-QualType 0x{{.+}} 'void (void *const restrict, ...)'
+// CHECK: | | | `-typeDetails: FunctionProtoType 0x{{.+}} 'void (void *const restrict, ...)' variadic cdecl
+// CHECK: | | | |-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | |-functionDetails: cdeclReturnType 0x{{.+}} 'void'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const restrict' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .task_t. 'void *const'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const' const
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | `-Record 0x{{.+}} ''
+// CHECK: | | |-RecordDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr 0x{{.+}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr 0x{{.+}} <<invalid sloc>> Implicit 36
+// CHECK: | | | `-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr 0x{{.+}} <<invalid sloc>> Implicit 36
+// CHECK: | | `-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-OMPTeamsDistributeDirective 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | |-OMPCollapseClause 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | | | `-ConstantExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | |-value: Int 1
+// CHECK: | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | `-CapturedStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}}
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | `-Record 0x{{.+}} ''
+// CHECK: | | |-RecordDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr 0x{{.+}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | | `-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-OMPCapturedExprDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-OMPCapturedExprDecl 0x{{.+}} <col:{{.*}}, <invalid sloc>> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '-'
+// CHECK: | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '/'
+// CHECK: | | | |-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue OMPCapturedExpr 0x{{.+}} '.capture_expr.' 'int'
+// CHECK: | | | | `-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '+'
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | |-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int'
+// CHECK: | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int'
+// CHECK: |-FunctionDecl 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}> line:{{.*}}:{{.*}} test_four 'void (int, int)'
+// CHECK: | |-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used x 'int'
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used y 'int'
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | `-CompoundStmt 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | `-OMPTargetDirective 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | |-OMPFirstprivateClause 0x{{.+}} <<invalid sloc>> <implicit>
+// CHECK: | | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-CapturedStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-CapturedStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-OMPTeamsDistributeDirective 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | |-OMPCollapseClause 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | `-ConstantExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | | |-value: Int 2
+// CHECK: | | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 2
+// CHECK: | | | | | `-CapturedStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | | |-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}}
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | |-RecordDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit struct definition
+// CHECK: | | | | | |-attrDetails: CapturedRecordAttr 0x{{.+}} <<invalid sloc>> Implicit
+// CHECK: | | | | | |-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | | | | `-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | |-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-OMPCapturedExprDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-OMPCapturedExprDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | `-OMPCapturedExprDecl 0x{{.+}} <line:{{.*}}:{{.*}}, <invalid sloc>> col:{{.*}} implicit used .capture_expr. 'long'
+// CHECK: | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'long' '-'
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}> 'long' '*'
+// CHECK: | | | | | |-ImplicitCastExpr 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'long' <IntegralCast>
+// CHECK: | | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '/'
+// CHECK: | | | | | | |-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue OMPCapturedExpr 0x{{.+}} '.capture_expr.' 'int'
+// CHECK: | | | | | | | `-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '+'
+// CHECK: | | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'long' <IntegralCast>
+// CHECK: | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '/'
+// CHECK: | | | | | |-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue OMPCapturedExpr 0x{{.+}} '.capture_expr.' 'int'
+// CHECK: | | | | | | `-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '+'
+// CHECK: | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | `-ImplicitCastExpr 0x{{.+}} <<invalid sloc>> 'long' <IntegralCast>
+// CHECK: | | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-attrDetails: AlwaysInlineAttr 0x{{.+}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int'
+// CHECK: | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .part_id. 'const int *const restrict'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .privates. 'void *const restrict'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const restrict' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'void (*const restrict)(void *const restrict, ...)' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'void (*)(void *const restrict, ...)'
+// CHECK: | | | | `-typeDetails: FunctionProtoType 0x{{.+}} 'void (void *const restrict, ...)' variadic cdecl
+// CHECK: | | | | |-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | | |-functionDetails: cdeclReturnType 0x{{.+}} 'void'
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const restrict' const __restrict
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | |-QualType 0x{{.+}} 'void (void *const restrict, ...)'
+// CHECK: | | | `-typeDetails: FunctionProtoType 0x{{.+}} 'void (void *const restrict, ...)' variadic cdecl
+// CHECK: | | | |-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | |-functionDetails: cdeclReturnType 0x{{.+}} 'void'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const restrict' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .task_t. 'void *const'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const' const
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | `-Record 0x{{.+}} ''
+// CHECK: | | |-RecordDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr 0x{{.+}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int'
+// CHECK: | | | | `-attrDetails: OMPCaptureKindAttr 0x{{.+}} <<invalid sloc>> Implicit 36
+// CHECK: | | | `-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr 0x{{.+}} <<invalid sloc>> Implicit 36
+// CHECK: | | `-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-OMPTeamsDistributeDirective 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | |-OMPCollapseClause 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | | | `-ConstantExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | |-value: Int 2
+// CHECK: | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 2
+// CHECK: | | | `-CapturedStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}}
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | `-Record 0x{{.+}} ''
+// CHECK: | | |-RecordDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit struct definition
+// CHECK: | | | |-attrDetails: CapturedRecordAttr 0x{{.+}} <<invalid sloc>> Implicit
+// CHECK: | | | |-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | | `-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-OMPCapturedExprDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-OMPCapturedExprDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-OMPCapturedExprDecl 0x{{.+}} <line:{{.*}}:{{.*}}, <invalid sloc>> col:{{.*}} implicit used .capture_expr. 'long'
+// CHECK: | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'long' '-'
+// CHECK: | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}> 'long' '*'
+// CHECK: | | | |-ImplicitCastExpr 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'long' <IntegralCast>
+// CHECK: | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '/'
+// CHECK: | | | | |-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue OMPCapturedExpr 0x{{.+}} '.capture_expr.' 'int'
+// CHECK: | | | | | `-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '+'
+// CHECK: | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'long' <IntegralCast>
+// CHECK: | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '/'
+// CHECK: | | | |-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue OMPCapturedExpr 0x{{.+}} '.capture_expr.' 'int'
+// CHECK: | | | | `-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '+'
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | `-ImplicitCastExpr 0x{{.+}} <<invalid sloc>> 'long' <IntegralCast>
+// CHECK: | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int'
+// CHECK: | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int'
+// CHECK: `-FunctionDecl 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}> line:{{.*}}:{{.*}} test_five 'void (int, int, int)'
+// CHECK: |-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used x 'int'
+// CHECK: | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: |-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used y 'int'
+// CHECK: | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: |-ParmVarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used z 'int'
+// CHECK: | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: `-CompoundStmt 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: `-OMPTargetDirective 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: |-OMPFirstprivateClause 0x{{.+}} <<invalid sloc>> <implicit>
+// CHECK: | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: `-CapturedStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-CapturedStmt 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-OMPTeamsDistributeDirective 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | | | |-OMPCollapseClause 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | `-ConstantExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | |-value: Int 2
+// CHECK: | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 2
+// CHECK: | | | | `-CapturedStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | | |-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | |-<<<NULL>>>
+// CHECK: | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}}
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | |-RecordDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit struct definition
+// CHECK: | | | | |-attrDetails: CapturedRecordAttr 0x{{.+}} <<invalid sloc>> Implicit
+// CHECK: | | | | |-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | | | |-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | | | `-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | | |-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | |-<<<NULL>>>
+// CHECK: | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | |-OMPCapturedExprDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-OMPCapturedExprDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | `-OMPCapturedExprDecl 0x{{.+}} <line:{{.*}}:{{.*}}, <invalid sloc>> col:{{.*}} implicit used .capture_expr. 'long'
+// CHECK: | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'long' '-'
+// CHECK: | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}> 'long' '*'
+// CHECK: | | | | |-ImplicitCastExpr 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'long' <IntegralCast>
+// CHECK: | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '/'
+// CHECK: | | | | | |-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue OMPCapturedExpr 0x{{.+}} '.capture_expr.' 'int'
+// CHECK: | | | | | | `-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '+'
+// CHECK: | | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | `-ImplicitCastExpr 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'long' <IntegralCast>
+// CHECK: | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '/'
+// CHECK: | | | | |-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue OMPCapturedExpr 0x{{.+}} '.capture_expr.' 'int'
+// CHECK: | | | | | `-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '+'
+// CHECK: | | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | `-ImplicitCastExpr 0x{{.+}} <<invalid sloc>> 'long' <IntegralCast>
+// CHECK: | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-attrDetails: AlwaysInlineAttr 0x{{.+}} <<invalid sloc>> Implicit __forceinline
+// CHECK: | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int'
+// CHECK: | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .part_id. 'const int *const restrict'
+// CHECK: | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .privates. 'void *const restrict'
+// CHECK: | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const restrict' const __restrict
+// CHECK: | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: | | |-qualTypeDetail: QualType 0x{{.+}} 'void (*const restrict)(void *const restrict, ...)' const __restrict
+// CHECK: | | | `-typeDetails: PointerType 0x{{.+}} 'void (*)(void *const restrict, ...)'
+// CHECK: | | | `-typeDetails: FunctionProtoType 0x{{.+}} 'void (void *const restrict, ...)' variadic cdecl
+// CHECK: | | | |-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | |-functionDetails: cdeclReturnType 0x{{.+}} 'void'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const restrict' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | |-QualType 0x{{.+}} 'void (void *const restrict, ...)'
+// CHECK: | | `-typeDetails: FunctionProtoType 0x{{.+}} 'void (void *const restrict, ...)' variadic cdecl
+// CHECK: | | |-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | |-functionDetails: cdeclReturnType 0x{{.+}} 'void'
+// CHECK: | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const restrict' const __restrict
+// CHECK: | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .task_t. 'void *const'
+// CHECK: | | |-qualTypeDetail: QualType 0x{{.+}} 'void *const' const
+// CHECK: | | | `-typeDetails: PointerType 0x{{.+}} 'void *'
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'void'
+// CHECK: | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | `-Record 0x{{.+}} ''
+// CHECK: | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | `-Record 0x{{.+}} ''
+// CHECK: | |-RecordDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit struct definition
+// CHECK: | | |-attrDetails: CapturedRecordAttr 0x{{.+}} <<invalid sloc>> Implicit
+// CHECK: | | |-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr 0x{{.+}} <<invalid sloc>> Implicit 36
+// CHECK: | | |-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int'
+// CHECK: | | | `-attrDetails: OMPCaptureKindAttr 0x{{.+}} <<invalid sloc>> Implicit 36
+// CHECK: | | `-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int'
+// CHECK: | | `-attrDetails: OMPCaptureKindAttr 0x{{.+}} <<invalid sloc>> Implicit 36
+// CHECK: | `-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-OMPTeamsDistributeDirective 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | |-OMPCollapseClause 0x{{.+}} <col:{{.*}}, col:{{.*}}>
+// CHECK: | | | `-ConstantExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | |-value: Int 2
+// CHECK: | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 2
+// CHECK: | | `-CapturedStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | | |-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | |-<<<NULL>>>
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}}
+// CHECK: | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | `-Record 0x{{.+}} ''
+// CHECK: | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | `-Record 0x{{.+}} ''
+// CHECK: | |-RecordDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit struct definition
+// CHECK: | | |-attrDetails: CapturedRecordAttr 0x{{.+}} <<invalid sloc>> Implicit
+// CHECK: | | |-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | |-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | | `-FieldDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit 'int &'
+// CHECK: | |-CapturedDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | | |-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | `-ForStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK: | | | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK: | | | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | |-<<<NULL>>>
+// CHECK: | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '<'
+// CHECK: | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'z' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | | | |-UnaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' postfix '++'
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'i' 'int'
+// CHECK: | | | `-NullStmt 0x{{.+}} <line:{{.*}}:{{.*}}>
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit .global_tid. 'const int *const restrict'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}} 'const int *const restrict' const __restrict
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}} 'const int *'
+// CHECK: | | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-ImplicitParamDecl 0x{{.+}} <col:{{.*}}> col:{{.*}}
+// CHECK: | | | |-qualTypeDetail: QualType 0x{{.+}}
+// CHECK: | | | | `-typeDetails: PointerType 0x{{.+}}
+// CHECK: | | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | | `-Record 0x{{.+}} ''
+// CHECK: | | | `-typeDetails: RecordType 0x{{.+}}
+// CHECK: | | | `-Record 0x{{.+}} ''
+// CHECK: | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | | `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used i 'int' cinit
+// CHECK: | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK: | |-OMPCapturedExprDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | |-OMPCapturedExprDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit used .capture_expr. 'int'
+// CHECK: | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int' refers_to_enclosing_variable_or_capture
+// CHECK: | `-OMPCapturedExprDecl 0x{{.+}} <line:{{.*}}:{{.*}}, <invalid sloc>> col:{{.*}} implicit used .capture_expr. 'long'
+// CHECK: | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'long' '-'
+// CHECK: | |-BinaryOperator 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}> 'long' '*'
+// CHECK: | | |-ImplicitCastExpr 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'long' <IntegralCast>
+// CHECK: | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '/'
+// CHECK: | | | |-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue OMPCapturedExpr 0x{{.+}} '.capture_expr.' 'int'
+// CHECK: | | | | `-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '+'
+// CHECK: | | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | `-ImplicitCastExpr 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'long' <IntegralCast>
+// CHECK: | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '/'
+// CHECK: | | |-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK: | | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue OMPCapturedExpr 0x{{.+}} '.capture_expr.' 'int'
+// CHECK: | | | `-ParenExpr 0x{{.+}} <col:{{.*}}> 'int'
+// CHECK: | | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, <invalid sloc>> 'int' '+'
+// CHECK: | | | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '-'
+// CHECK: | | | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK: | | | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | | | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK: | `-ImplicitCastExpr 0x{{.+}} <<invalid sloc>> 'long' <IntegralCast>
+// CHECK: | `-IntegerLiteral 0x{{.+}} <<invalid sloc>> 'int' 1
+// CHECK: |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'x' 'int'
+// CHECK: |-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'y' 'int'
+// CHECK: `-DeclRefExpr 0x{{.+}} <line:{{.*}}:{{.*}}> 'int' lvalue ParmVar 0x{{.+}} 'z' 'int'
\ No newline at end of file
diff --git a/clang/test/AST/ast-dump-openmp-teams.c b/clang/test/AST/ast-dump-openmp-teams.c
index 8889af791d450..218bcac2952f9 100644
--- a/clang/test/AST/ast-dump-openmp-teams.c
+++ b/clang/test/AST/ast-dump-openmp-teams.c
@@ -19,38 +19,38 @@ void test(void) {
// CHECK-NEXT: | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
// CHECK-NEXT: | | |-NullStmt {{.*}} <col:3>
// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | | `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams.c:5:1) *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams.c:4:1) *const restrict'
-// CHECK-NEXT: | |-RecordDecl {{.*}} <line:5:1> col:1 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: | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams.c:5:1) *const restrict'
-// CHECK-NEXT: |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams.c:4:1) *const restrict'
-// CHECK-NEXT: |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
-// CHECK-NEXT: | `-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
-// CHECK-NEXT: `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: |-OMPTeamsDirective {{.*}} <line:5:1, col:18>
-// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:6:3>
-// CHECK-NEXT: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
-// CHECK-NEXT: | |-NullStmt {{.*}} <col:3>
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: | `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams.c:5:1) *const restrict'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams.c:4:1) *const restrict'
-// CHECK-NEXT: |-RecordDecl {{.*}} <line:5:1> col:1 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: |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
-// CHECK-NEXT: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
-// CHECK-NEXT: `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams.c:5:1) *const restrict'
+// CHECK: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | | `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams.c:5:1) *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams.c:4:1) *const restrict'
+// CHECK: | |-RecordDecl {{.*}} <line:5:1> col:1 implicit struct definition
+// CHECK: | | `-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-NullStmt {{.*}} <line:6:3>
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams.c:5:1) *const restrict'
+// CHECK: |-attrDetails: AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
+// CHECK: |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams.c:4:1) *const restrict'
+// CHECK: |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
+// CHECK: | `-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: |-OMPTeamsDirective {{.*}} <line:5:1, col:18>
+// CHECK: | `-CapturedStmt {{.*}} <line:6:3>
+// CHECK: | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: | |-NullStmt {{.*}} <col:3>
+// CHECK: | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: | `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams.c:5:1) *const restrict'
+// CHECK: |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams.c:4:1) *const restrict'
+// CHECK: |-RecordDecl {{.*}} <line:5:1> col:1 implicit struct definition
+// CHECK: | `-attrDetails: CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
+// CHECK: `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
+// CHECK: |-NullStmt {{.*}} <line:6:3>
+// CHECK: |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
+// CHECK: |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
+// CHECK: `-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-teams.c:5:1) *const restrict'
diff --git a/clang/test/AST/ast-dump-overloaded-operators.cpp b/clang/test/AST/ast-dump-overloaded-operators.cpp
index 639a0d9874eb0..f4a64362fe435 100644
--- a/clang/test/AST/ast-dump-overloaded-operators.cpp
+++ b/clang/test/AST/ast-dump-overloaded-operators.cpp
@@ -20,25 +20,25 @@ void test() {
// CHECK: |-EnumDecl {{.*}} <{{.*}}ast-dump-overloaded-operators.cpp:10:1, col:9> col:6{{( imported)?}} referenced E
// CHECK-NEXT: |-FunctionDecl {{.*}} <line:11:1, col:19> col:6{{( imported)?}} used operator+ 'void (E, E)'
// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:16> col:17{{( imported)?}} 'E'
-// CHECK-NEXT: | `-ParmVarDecl {{.*}} <col:18> col:19{{( imported)?}} 'E'
-// CHECK-NEXT: |-FunctionDecl {{.*}} <line:12:1, col:19> col:6{{( imported)?}} used operator, 'void (E, E)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:16> col:17{{( imported)?}} 'E'
-// CHECK-NEXT: | `-ParmVarDecl {{.*}} <col:18> col:19{{( imported)?}} 'E'
-// CHECK-NEXT: `-FunctionDecl {{.*}} <line:14:1, line:18:1> line:14:6{{( imported)?}} test 'void ()'
-// CHECK-NEXT: `-CompoundStmt {{.*}} <col:13, line:18:1>
-// CHECK-NEXT: |-DeclStmt {{.*}} <line:15:3, col:6>
-// CHECK-NEXT: | `-VarDecl {{.*}} <col:3, col:5> col:5{{( imported)?}} used e 'E'
-// CHECK-NEXT: |-CXXOperatorCallExpr {{.*}} <line:16:3, col:7> 'void' '+'
-// CHECK-NEXT: | |-ImplicitCastExpr {{.*}} <col:5> 'void (*)(E, E)' <FunctionToPointerDecay>
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <col:5> 'void (E, E)' lvalue Function {{.*}} 'operator+' 'void (E, E)'
-// CHECK-NEXT: | |-ImplicitCastExpr {{.*}} <col:3> 'E' <LValueToRValue>
-// CHECK-NEXT: | | `-DeclRefExpr {{.*}} <col:3> 'E' lvalue Var {{.*}} 'e' 'E'
-// CHECK-NEXT: | `-ImplicitCastExpr {{.*}} <col:7> 'E' <LValueToRValue>
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <col:7> 'E' lvalue Var {{.*}} 'e' 'E'
-// CHECK-NEXT: `-CXXOperatorCallExpr {{.*}} <line:17:3, col:7> 'void' ','
-// CHECK-NEXT: |-ImplicitCastExpr {{.*}} <col:5> 'void (*)(E, E)' <FunctionToPointerDecay>
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <col:5> 'void (E, E)' lvalue Function {{.*}} 'operator,' 'void (E, E)'
-// CHECK-NEXT: |-ImplicitCastExpr {{.*}} <col:3> 'E' <LValueToRValue>
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} <col:3> 'E' lvalue Var {{.*}} 'e' 'E'
-// CHECK-NEXT: `-ImplicitCastExpr {{.*}} <col:7> 'E' <LValueToRValue>
-// CHECK-NEXT: `-DeclRefExpr {{.*}} <col:7> 'E' lvalue Var {{.*}} 'e' 'E'
+// CHECK: | `-ParmVarDecl {{.*}} <col:18> col:19{{( imported)?}} 'E'
+// CHECK: |-FunctionDecl {{.*}} <line:12:1, col:19> col:6{{( imported)?}} used operator, 'void (E, E)'
+// CHECK: | |-ParmVarDecl {{.*}} <col:16> col:17{{( imported)?}} 'E'
+// CHECK: | `-ParmVarDecl {{.*}} <col:18> col:19{{( imported)?}} 'E'
+// CHECK: `-FunctionDecl {{.*}} <line:14:1, line:18:1> line:14:6{{( imported)?}} test 'void ()'
+// CHECK: `-CompoundStmt {{.*}} <col:13, line:18:1>
+// CHECK: |-DeclStmt {{.*}} <line:15:3, col:6>
+// CHECK: | `-VarDecl {{.*}} <col:3, col:5> col:5{{( imported)?}} used e 'E'
+// CHECK: |-CXXOperatorCallExpr {{.*}} <line:16:3, col:7> 'void' '+'
+// CHECK: | |-ImplicitCastExpr {{.*}} <col:5> 'void (*)(E, E)' <FunctionToPointerDecay>
+// CHECK: | | `-DeclRefExpr {{.*}} <col:5> 'void (E, E)' lvalue Function {{.*}} 'operator+' 'void (E, E)'
+// CHECK: | |-ImplicitCastExpr {{.*}} <col:3> 'E' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr {{.*}} <col:3> 'E' lvalue Var {{.*}} 'e' 'E'
+// CHECK: | `-ImplicitCastExpr {{.*}} <col:7> 'E' <LValueToRValue>
+// CHECK: | `-DeclRefExpr {{.*}} <col:7> 'E' lvalue Var {{.*}} 'e' 'E'
+// CHECK: `-CXXOperatorCallExpr {{.*}} <line:17:3, col:7> 'void' ','
+// CHECK: |-ImplicitCastExpr {{.*}} <col:5> 'void (*)(E, E)' <FunctionToPointerDecay>
+// CHECK: | `-DeclRefExpr {{.*}} <col:5> 'void (E, E)' lvalue Function {{.*}} 'operator,' 'void (E, E)'
+// CHECK: |-ImplicitCastExpr {{.*}} <col:3> 'E' <LValueToRValue>
+// CHECK: | `-DeclRefExpr {{.*}} <col:3> 'E' lvalue Var {{.*}} 'e' 'E'
+// CHECK: `-ImplicitCastExpr {{.*}} <col:7> 'E' <LValueToRValue>
+// CHECK: `-DeclRefExpr {{.*}} <col:7> 'E' lvalue Var {{.*}} 'e' 'E'
diff --git a/clang/test/AST/ast-dump-pack-indexing-crash.cpp b/clang/test/AST/ast-dump-pack-indexing-crash.cpp
index 0b0c0b572b5e6..dd71e5d99e033 100644
--- a/clang/test/AST/ast-dump-pack-indexing-crash.cpp
+++ b/clang/test/AST/ast-dump-pack-indexing-crash.cpp
@@ -16,10 +16,10 @@ void not_pack() {
// CHECK: FunctionDecl {{.*}} not_pack 'void ()'
// CHECK: DeclStmt {{.*}}
// CHECK: DeclStmt {{.*}}
-// CHECK-NEXT: VarDecl {{.*}} a 'NotAPack...{{.*}}'
-// CHECK-NEXT: DeclStmt {{.*}}
-// CHECK-NEXT: VarDecl {{.*}} 'T...{{.*}}'
-// CHECK-NEXT: DeclStmt {{.*}}
-// CHECK-NEXT: VarDecl {{.*}} c 'Tp...{{.*}}'
+// CHECK: VarDecl {{.*}} a 'NotAPack...{{.*}}'
+// CHECK: DeclStmt {{.*}}
+// CHECK: VarDecl {{.*}} 'T...{{.*}}'
+// CHECK: DeclStmt {{.*}}
+// CHECK: VarDecl {{.*}} c 'Tp...{{.*}}'
}
diff --git a/clang/test/AST/ast-dump-ppc-types.c b/clang/test/AST/ast-dump-ppc-types.c
index 26ae5441f20d7..d381227590c56 100644
--- a/clang/test/AST/ast-dump-ppc-types.c
+++ b/clang/test/AST/ast-dump-ppc-types.c
@@ -16,9 +16,9 @@
// ensure the types are target-dependent.
// CHECK: TypedefDecl {{.*}} implicit __vector_quad '__vector_quad'
-// CHECK-NEXT: -BuiltinType {{.*}} '__vector_quad'
+// CHECK-NEXT: -typeDetails: BuiltinType {{.*}} '__vector_quad'
// CHECK: TypedefDecl {{.*}} implicit __vector_pair '__vector_pair'
-// CHECK-NEXT: -BuiltinType {{.*}} '__vector_pair'
+// CHECK-NEXT: -typeDetails: BuiltinType {{.*}} '__vector_pair'
// CHECK-X86_64-NOT: __vector_quad
// CHECK-X86_64-NOT: __vector_pair
diff --git a/clang/test/AST/ast-dump-pragma-json.c b/clang/test/AST/ast-dump-pragma-json.c
index c2ab154e6402b..8528e1ad4caf1 100644
--- a/clang/test/AST/ast-dump-pragma-json.c
+++ b/clang/test/AST/ast-dump-pragma-json.c
@@ -1,485 +1,515 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -ast-dump=json %s | FileCheck %s
-
-float func_16(float x, float y) {
- #pragma STDC FENV_ROUND FE_TOWARDZERO
- if (x < 0) {
- #pragma STDC FENV_ROUND FE_UPWARD
- return x - y;
- }
- return x + y;
-}
-
-// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
-// using --filters=CompoundStmt
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 116,
-// CHECK-NEXT: "col": 33,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 249,
-// CHECK-NEXT: "line": 10,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "fpoptions": {
-// CHECK-NEXT: "ConstRoundingMode": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IfStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 160,
-// CHECK-NEXT: "line": 5,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 231,
-// CHECK-NEXT: "line": 8,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 164,
-// CHECK-NEXT: "line": 5,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 168,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "<",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 164,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 164,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 164,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 164,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 168,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 168,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralToFloating",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 168,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 168,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 171,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 231,
-// CHECK-NEXT: "line": 8,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "fpoptions": {
-// CHECK-NEXT: "ConstRoundingMode": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ReturnStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 215,
-// CHECK-NEXT: "line": 7,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 226,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 222,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 226,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "-",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 222,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 222,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 222,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 222,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 226,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 226,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 226,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 226,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "y",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ReturnStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 235,
-// CHECK-NEXT: "line": 9,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 246,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 242,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 246,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "+",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 242,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 242,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 242,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 242,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 246,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 246,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 246,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 246,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "y",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
+// RUN: %clang_cc1 -triple x86_64-unknown-unknown -ast-dump=json %s | FileCheck %s
+
+float func_16(float x, float y) {
+ #pragma STDC FENV_ROUND FE_TOWARDZERO
+ if (x < 0) {
+ #pragma STDC FENV_ROUND FE_UPWARD
+ return x - y;
+ }
+ return x + y;
+}
+
+// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
+// using --filters=CompoundStmt
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "col": 33,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "line": 10,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "fpoptions": {
+// CHECK-NEXT: "ConstRoundingMode": 0
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IfStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "line": 5,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "line": 8,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "line": 5,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "<",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "float"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "float"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "float"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "fpp"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "float"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralToFloating",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "line": 8,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "fpoptions": {
+// CHECK-NEXT: "ConstRoundingMode": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ReturnStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "line": 7,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "float"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "-",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "float"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "float"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "float"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "fpp"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "float"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "float"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "y",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "float"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "fpp"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ReturnStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "line": 9,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "float"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "+",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "float"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "float"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "float"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "fpp"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "float"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{.*}},
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "float"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "y",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "float"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "fpp"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
diff --git a/clang/test/AST/ast-dump-pragma-unroll.cpp b/clang/test/AST/ast-dump-pragma-unroll.cpp
index f9c254b803ff2..19bdd5035164c 100644
--- a/clang/test/AST/ast-dump-pragma-unroll.cpp
+++ b/clang/test/AST/ast-dump-pragma-unroll.cpp
@@ -2,10 +2,10 @@
using size_t = unsigned long long;
-// CHECK: LoopHintAttr {{.*}} Implicit unroll UnrollCount Numeric
-// CHECK: LoopHintAttr {{.*}} Implicit unroll UnrollCount Numeric
-// CHECK: LoopHintAttr {{.*}} Implicit unroll Unroll Disable
-// CHECK: LoopHintAttr {{.*}} Implicit unroll Unroll Disable
+// CHECK: attrDetails: LoopHintAttr {{.*}} Implicit unroll UnrollCount Numeric
+// CHECK: attrDetails: LoopHintAttr {{.*}} Implicit unroll UnrollCount Numeric
+// CHECK: attrDetails: LoopHintAttr {{.*}} Implicit unroll Unroll Disable
+// CHECK: attrDetails: LoopHintAttr {{.*}} Implicit unroll Unroll Disable
template <bool Flag>
int value_dependent(int n) {
constexpr int N = 100;
diff --git a/clang/test/AST/ast-dump-record-definition-data-json.cpp b/clang/test/AST/ast-dump-record-definition-data-json.cpp
index c102c436a2a4b..8e79cce55f181 100644
--- a/clang/test/AST/ast-dump-record-definition-data-json.cpp
+++ b/clang/test/AST/ast-dump-record-definition-data-json.cpp
@@ -1,5289 +1,5985 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -fclang-abi-compat=7.0 -std=c++17 -ast-dump=json %s | FileCheck %s
-
-void f() {
- auto IsNotGenericLambda = [](){};
- auto IsGenericLambda = [](auto){};
-}
-
-struct CanPassInRegisters {
- CanPassInRegisters(const CanPassInRegisters&) = default;
-};
-
-struct CantPassInRegisters {
- CantPassInRegisters(const CantPassInRegisters&) = delete;
-};
-
-struct IsEmpty {
-};
-
-struct IsNotEmpty {
- int a;
-};
-
-struct IsAggregate {
- int a;
-};
-
-struct IsNotAggregate {
-private:
- int a;
-};
-
-struct IsStandardLayout {
- void f();
-};
-
-struct IsNotStandardLayout {
- virtual void f();
-};
-
-struct IsTriviallyCopyable {
-};
-
-struct IsNotTriviallyCopyable {
- IsNotTriviallyCopyable(const IsNotTriviallyCopyable&) {}
-};
-
-struct IsPOD {
- int a;
-};
-
-struct IsNotPOD {
- int &a;
-};
-
-struct IsTrivial {
- IsTrivial() = default;
-};
-
-struct IsNotTrivial {
- IsNotTrivial() {}
-};
-
-struct IsPolymorphic {
- virtual void f();
-};
-
-struct IsNotPolymorphic {
- void f();
-};
-
-struct IsAbstract {
- virtual void f() = 0;
-};
-
-struct IsNotAbstract {
- virtual void f();
-};
-
-struct IsLiteral {
- ~IsLiteral() = default;
-};
-
-struct IsNotLiteral {
- ~IsNotLiteral() {}
-};
-
-struct HasUserDeclaredConstructor {
- HasUserDeclaredConstructor() {}
-};
-
-struct HasNoUserDeclaredConstructor {
-};
-
-struct HasConstexprNonCopyMoveConstructor {
- constexpr HasConstexprNonCopyMoveConstructor() {}
-};
-
-struct HasNoConstexprNonCopyMoveConstructor {
- HasNoConstexprNonCopyMoveConstructor() {}
-};
-
-struct HasMutableFields {
- mutable int i;
-};
-
-struct HasNoMutableFields {
- int i;
-};
-
-struct HasVariantMembers {
- union {
- int i;
- };
-};
-
-struct HasNoVariantMembers {
-};
-
-struct AllowsConstDefaultInit {
- int i = 12;
-};
-
-struct DoesNotAllowConstDefaultInit {
- int i;
-};
-
-// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
-// using --filters=CXXRecordDecl
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "name": "__NSConstantString_tag"
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "name": "__va_list_tag"
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLambda": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {},
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 32,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 34,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "operator()",
-// CHECK-NEXT: "mangledName": "_ZZ1fvENK3$_0clEv",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void () const"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 33,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 34,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXConversionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 34,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "operator void (*)()",
-// CHECK-NEXT: "mangledName": "_ZZ1fvENK3$_0cvPFvvEEv",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (*() const noexcept)()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 34,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "__invoke",
-// CHECK-NEXT: "mangledName": "_ZZ1fvEN3$_08__invokeEv",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "storageClass": "static",
-// CHECK-NEXT: "inline": true
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXDestructorDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "~(lambda at {{.*}})",
-// CHECK-NEXT: "mangledName": "_ZZ1fvEN3$_0D1Ev",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void () noexcept"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "explicitlyDefaulted": "default"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isGenericLambda": true,
-// CHECK-NEXT: "isLambda": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {},
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 35,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "operator()",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 33,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 33,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "auto:1",
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 33,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 35,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "operator()",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "auto (auto) const"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 33,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "auto"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 34,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 35,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 35,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "operator auto (*)(type-parameter-0-0)",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 33,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 33,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "auto:1",
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXConversionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 35,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "operator auto (*)(type-parameter-0-0)",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "auto (*() const noexcept)(auto)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 35,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "__invoke",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 33,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 33,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "auto:1",
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 35,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "__invoke",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "auto (auto)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "storageClass": "static",
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 33,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "auto"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXDestructorDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "~(lambda at {{.*}})",
-// CHECK-NEXT: "mangledName": "_ZZ1fvEN3$_1D1Ev",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void () noexcept"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "explicitlyDefaulted": "default"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 8,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 18
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 10,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "CanPassInRegisters",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "trivial": true,
-// CHECK-NEXT: "userDeclared": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasUserDeclaredConstructor": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {},
-// CHECK-NEXT: "moveCtor": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 8,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 18
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 18
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "CanPassInRegisters",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXConstructorDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 9,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 18
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 18
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 57,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "CanPassInRegisters",
-// CHECK-NEXT: "mangledName": "_ZN18CanPassInRegistersC1ERKS_",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (const CanPassInRegisters &)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "constexpr": true,
-// CHECK-NEXT: "explicitlyDefaulted": "default",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 47,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 46,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const CanPassInRegisters &"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 12,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 14,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "CantPassInRegisters",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "trivial": true,
-// CHECK-NEXT: "userDeclared": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasUserDeclaredConstructor": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {},
-// CHECK-NEXT: "moveCtor": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 12,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "CantPassInRegisters",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXConstructorDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 13,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 58,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "CantPassInRegisters",
-// CHECK-NEXT: "mangledName": "_ZN19CantPassInRegistersC1ERKS_",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (const CantPassInRegisters &)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "explicitlyDeleted": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 49,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 48,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const CantPassInRegisters &"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 16,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 7
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 17,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "IsEmpty",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 16,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 7
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 7
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "IsEmpty",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 19,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 21,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "IsNotEmpty",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 19,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "IsNotEmpty",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 20,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 23,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 11
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 25,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "IsAggregate",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 23,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 11
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 11
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "IsAggregate",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 24,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 27,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 14
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 30,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "IsNotAggregate",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 27,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 14
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 14
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "IsNotAggregate",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "AccessSpecDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 28,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 7
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 7
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "access": "private"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 29,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 32,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 16
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 34,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "IsStandardLayout",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 32,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 16
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 16
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "IsStandardLayout",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 33,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "f",
-// CHECK-NEXT: "mangledName": "_ZN16IsStandardLayout1fEv",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 36,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 38,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "IsNotStandardLayout",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "nonTrivial": true,
-// CHECK-NEXT: "simple": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "nonTrivial": true,
-// CHECK-NEXT: "simple": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "nonTrivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPolymorphic": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "nonTrivial": true,
-// CHECK-NEXT: "simple": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "nonTrivial": true,
-// CHECK-NEXT: "simple": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 36,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "IsNotStandardLayout",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 37,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 7
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "f",
-// CHECK-NEXT: "mangledName": "_ZN19IsNotStandardLayout1fEv",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "virtual": true
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 36,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "operator=",
-// CHECK-NEXT: "mangledName": "_ZN19IsNotStandardLayoutaSERKS_",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "IsNotStandardLayout &(const IsNotStandardLayout &)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true,
-// CHECK-NEXT: "explicitlyDefaulted": "default",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const IsNotStandardLayout &"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "operator=",
-// CHECK-NEXT: "mangledName": "_ZN19IsNotStandardLayoutaSEOS_",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "IsNotStandardLayout &(IsNotStandardLayout &&)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true,
-// CHECK-NEXT: "explicitlyDefaulted": "default",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "IsNotStandardLayout &&"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXDestructorDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "~IsNotStandardLayout",
-// CHECK-NEXT: "mangledName": "_ZN19IsNotStandardLayoutD1Ev",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "explicitlyDefaulted": "default"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 40,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 41,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "IsTriviallyCopyable",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 40,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "IsTriviallyCopyable",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 43,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 22
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 45,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "IsNotTriviallyCopyable",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "nonTrivial": true,
-// CHECK-NEXT: "userDeclared": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasUserDeclaredConstructor": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "moveAssign": {},
-// CHECK-NEXT: "moveCtor": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 43,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 22
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 22
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "IsNotTriviallyCopyable",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXConstructorDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 44,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 22
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 22
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 58,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "IsNotTriviallyCopyable",
-// CHECK-NEXT: "mangledName": "_ZN22IsNotTriviallyCopyableC1ERKS_",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (const IsNotTriviallyCopyable &)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 55,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 54,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const IsNotTriviallyCopyable &"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 57,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 58,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 47,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 49,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "IsPOD",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 47,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "IsPOD",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 48,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 51,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 53,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "IsNotPOD",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 51,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "IsNotPOD",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 52,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int &"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 55,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 9
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 57,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "IsTrivial",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "hasUserDeclaredConstructor": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 55,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 9
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 9
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "IsTrivial",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXConstructorDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 56,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 9
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 9
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "IsTrivial",
-// CHECK-NEXT: "mangledName": "_ZN9IsTrivialC1Ev",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "constexpr": true,
-// CHECK-NEXT: "explicitlyDefaulted": "default"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 59,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 12
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 61,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "IsNotTrivial",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "nonTrivial": true,
-// CHECK-NEXT: "userProvided": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasUserDeclaredConstructor": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 59,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 12
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 12
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "IsNotTrivial",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXConstructorDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 60,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 12
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 12
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "IsNotTrivial",
-// CHECK-NEXT: "mangledName": "_ZN12IsNotTrivialC1Ev",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 63,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 65,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "IsPolymorphic",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "nonTrivial": true,
-// CHECK-NEXT: "simple": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "nonTrivial": true,
-// CHECK-NEXT: "simple": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "nonTrivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPolymorphic": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "nonTrivial": true,
-// CHECK-NEXT: "simple": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "nonTrivial": true,
-// CHECK-NEXT: "simple": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 63,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "IsPolymorphic",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 64,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 7
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "f",
-// CHECK-NEXT: "mangledName": "_ZN13IsPolymorphic1fEv",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "virtual": true
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 63,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "operator=",
-// CHECK-NEXT: "mangledName": "_ZN13IsPolymorphicaSERKS_",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "IsPolymorphic &(const IsPolymorphic &)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true,
-// CHECK-NEXT: "explicitlyDefaulted": "default",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const IsPolymorphic &"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "operator=",
-// CHECK-NEXT: "mangledName": "_ZN13IsPolymorphicaSEOS_",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "IsPolymorphic &(IsPolymorphic &&)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true,
-// CHECK-NEXT: "explicitlyDefaulted": "default",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "IsPolymorphic &&"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXDestructorDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "~IsPolymorphic",
-// CHECK-NEXT: "mangledName": "_ZN13IsPolymorphicD1Ev",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "explicitlyDefaulted": "default"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 67,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 16
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 69,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "IsNotPolymorphic",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 67,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 16
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 16
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "IsNotPolymorphic",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 68,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "f",
-// CHECK-NEXT: "mangledName": "_ZN16IsNotPolymorphic1fEv",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 71,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 73,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "IsAbstract",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "nonTrivial": true,
-// CHECK-NEXT: "simple": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "nonTrivial": true,
-// CHECK-NEXT: "simple": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "nonTrivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "isAbstract": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPolymorphic": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "nonTrivial": true,
-// CHECK-NEXT: "simple": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "nonTrivial": true,
-// CHECK-NEXT: "simple": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 71,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "IsAbstract",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 72,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 7
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "f",
-// CHECK-NEXT: "mangledName": "_ZN10IsAbstract1fEv",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "virtual": true,
-// CHECK-NEXT: "pure": true
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 71,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "operator=",
-// CHECK-NEXT: "mangledName": "_ZN10IsAbstractaSERKS_",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "IsAbstract &(const IsAbstract &)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true,
-// CHECK-NEXT: "explicitlyDefaulted": "default",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const IsAbstract &"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "operator=",
-// CHECK-NEXT: "mangledName": "_ZN10IsAbstractaSEOS_",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "IsAbstract &(IsAbstract &&)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true,
-// CHECK-NEXT: "explicitlyDefaulted": "default",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "IsAbstract &&"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXDestructorDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "~IsAbstract",
-// CHECK-NEXT: "mangledName": "_ZN10IsAbstractD1Ev",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "explicitlyDefaulted": "default"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 75,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 77,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "IsNotAbstract",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "nonTrivial": true,
-// CHECK-NEXT: "simple": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "nonTrivial": true,
-// CHECK-NEXT: "simple": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "nonTrivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPolymorphic": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "nonTrivial": true,
-// CHECK-NEXT: "simple": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "nonTrivial": true,
-// CHECK-NEXT: "simple": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 75,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "IsNotAbstract",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 76,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 7
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "f",
-// CHECK-NEXT: "mangledName": "_ZN13IsNotAbstract1fEv",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "virtual": true
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 75,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "operator=",
-// CHECK-NEXT: "mangledName": "_ZN13IsNotAbstractaSERKS_",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "IsNotAbstract &(const IsNotAbstract &)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true,
-// CHECK-NEXT: "explicitlyDefaulted": "default",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const IsNotAbstract &"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "operator=",
-// CHECK-NEXT: "mangledName": "_ZN13IsNotAbstractaSEOS_",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "IsNotAbstract &(IsNotAbstract &&)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true,
-// CHECK-NEXT: "explicitlyDefaulted": "default",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "IsNotAbstract &&"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXDestructorDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "~IsNotAbstract",
-// CHECK-NEXT: "mangledName": "_ZN13IsNotAbstractD1Ev",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "explicitlyDefaulted": "default"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 79,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 9
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 81,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "IsLiteral",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "trivial": true,
-// CHECK-NEXT: "userDeclared": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {},
-// CHECK-NEXT: "moveCtor": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 79,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 9
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 9
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "IsLiteral",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXDestructorDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 80,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "~IsLiteral",
-// CHECK-NEXT: "mangledName": "_ZN9IsLiteralD1Ev",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "explicitlyDefaulted": "default"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 83,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 12
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 85,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "IsNotLiteral",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "nonTrivial": true,
-// CHECK-NEXT: "userDeclared": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "moveAssign": {},
-// CHECK-NEXT: "moveCtor": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 83,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 12
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 12
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "IsNotLiteral",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXDestructorDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 84,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "~IsNotLiteral",
-// CHECK-NEXT: "mangledName": "_ZN12IsNotLiteralD1Ev",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void () noexcept"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 87,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 26
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 89,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "HasUserDeclaredConstructor",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "nonTrivial": true,
-// CHECK-NEXT: "userProvided": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasUserDeclaredConstructor": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 87,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 26
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 26
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "HasUserDeclaredConstructor",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXConstructorDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 88,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 26
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 26
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 33,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "HasUserDeclaredConstructor",
-// CHECK-NEXT: "mangledName": "_ZN26HasUserDeclaredConstructorC1Ev",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 32,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 33,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 91,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 28
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 92,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "HasNoUserDeclaredConstructor",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 91,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 28
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 28
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "HasNoUserDeclaredConstructor",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 94,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 34
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 96,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "HasConstexprNonCopyMoveConstructor",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "nonTrivial": true,
-// CHECK-NEXT: "userProvided": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "hasUserDeclaredConstructor": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 94,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 34
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 34
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "HasConstexprNonCopyMoveConstructor",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXConstructorDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 95,
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 34
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 9
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 51,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "HasConstexprNonCopyMoveConstructor",
-// CHECK-NEXT: "mangledName": "_ZN34HasConstexprNonCopyMoveConstructorC1Ev",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "constexpr": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 50,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 51,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 98,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 36
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 100,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "HasNoConstexprNonCopyMoveConstructor",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "nonTrivial": true,
-// CHECK-NEXT: "userProvided": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasUserDeclaredConstructor": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 98,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 36
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 36
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "HasNoConstexprNonCopyMoveConstructor",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXConstructorDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 99,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 36
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 36
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 43,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "HasNoConstexprNonCopyMoveConstructor",
-// CHECK-NEXT: "mangledName": "_ZN36HasNoConstexprNonCopyMoveConstructorC1Ev",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 42,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 43,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 102,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 16
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 104,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "HasMutableFields",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasMutableFields": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 102,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 16
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 16
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "HasMutableFields",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 103,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 7
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "mutable": true
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 106,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 18
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 108,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "HasNoMutableFields",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 106,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 18
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 18
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "HasNoMutableFields",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 107,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 110,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 17
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 114,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "HasVariantMembers",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasVariantMembers": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 110,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 17
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 17
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "HasVariantMembers",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 111,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 113,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "tagUsed": "union",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasVariantMembers": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 112,
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 111,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "HasVariantMembers::(anonymous union at {{.*}}:111:3)"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IndirectFieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 112,
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "i"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 116,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 117,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "HasNoVariantMembers",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 116,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "HasNoVariantMembers",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 119,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 22
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 121,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "AllowsConstDefaultInit",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "nonTrivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 119,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 22
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 22
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "AllowsConstDefaultInit",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 120,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasInClassInitializer": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "12"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 123,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 28
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 125,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "DoesNotAllowConstDefaultInit",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 123,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 28
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 28
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "DoesNotAllowConstDefaultInit",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 124,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
+// RUN: %clang_cc1 -triple x86_64-unknown-unknown -fclang-abi-compat=7.0 -std=c++17 -ast-dump=json %s | FileCheck %s
+
+void f() {
+ auto IsNotGenericLambda = [](){};
+ auto IsGenericLambda = [](auto){};
+}
+
+struct CanPassInRegisters {
+ CanPassInRegisters(const CanPassInRegisters&) = default;
+};
+
+struct CantPassInRegisters {
+ CantPassInRegisters(const CantPassInRegisters&) = delete;
+};
+
+struct IsEmpty {
+};
+
+struct IsNotEmpty {
+ int a;
+};
+
+struct IsAggregate {
+ int a;
+};
+
+struct IsNotAggregate {
+private:
+ int a;
+};
+
+struct IsStandardLayout {
+ void f();
+};
+
+struct IsNotStandardLayout {
+ virtual void f();
+};
+
+struct IsTriviallyCopyable {
+};
+
+struct IsNotTriviallyCopyable {
+ IsNotTriviallyCopyable(const IsNotTriviallyCopyable&) {}
+};
+
+struct IsPOD {
+ int a;
+};
+
+struct IsNotPOD {
+ int &a;
+};
+
+struct IsTrivial {
+ IsTrivial() = default;
+};
+
+struct IsNotTrivial {
+ IsNotTrivial() {}
+};
+
+struct IsPolymorphic {
+ virtual void f();
+};
+
+struct IsNotPolymorphic {
+ void f();
+};
+
+struct IsAbstract {
+ virtual void f() = 0;
+};
+
+struct IsNotAbstract {
+ virtual void f();
+};
+
+struct IsLiteral {
+ ~IsLiteral() = default;
+};
+
+struct IsNotLiteral {
+ ~IsNotLiteral() {}
+};
+
+struct HasUserDeclaredConstructor {
+ HasUserDeclaredConstructor() {}
+};
+
+struct HasNoUserDeclaredConstructor {
+};
+
+struct HasConstexprNonCopyMoveConstructor {
+ constexpr HasConstexprNonCopyMoveConstructor() {}
+};
+
+struct HasNoConstexprNonCopyMoveConstructor {
+ HasNoConstexprNonCopyMoveConstructor() {}
+};
+
+struct HasMutableFields {
+ mutable int i;
+};
+
+struct HasNoMutableFields {
+ int i;
+};
+
+struct HasVariantMembers {
+ union {
+ int i;
+ };
+};
+
+struct HasNoVariantMembers {
+};
+
+struct AllowsConstDefaultInit {
+ int i = 12;
+};
+
+struct DoesNotAllowConstDefaultInit {
+ int i;
+};
+
+// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
+// using --filters=CXXRecordDecl
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "__NSConstantString_tag"
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "__va_list_tag"
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 160,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 160,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 160,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "tagUsed": "class",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLambda": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {},
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 160,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 163,
+// CHECK-NEXT: "col": 32,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 165,
+// CHECK-NEXT: "col": 34,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "operator()",
+// CHECK-NEXT: "mangledName": "_ZZ1fvENK3$_0clEv",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void () const"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "constexpr": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 164,
+// CHECK-NEXT: "col": 33,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 165,
+// CHECK-NEXT: "col": 34,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXConversionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 160,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 160,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 165,
+// CHECK-NEXT: "col": 34,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "operator void (*)()",
+// CHECK-NEXT: "mangledName": "_ZZ1fvENK3$_0cvPFvvEEv",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (*() const noexcept)()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "constexpr": true
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 160,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 160,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 165,
+// CHECK-NEXT: "col": 34,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "__invoke",
+// CHECK-NEXT: "mangledName": "_ZZ1fvEN3$_08__invokeEv",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "storageClass": "static",
+// CHECK-NEXT: "inline": true
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXDestructorDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 160,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 160,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 160,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "~(lambda at {{.*}}:4:29)",
+// CHECK-NEXT: "mangledName": "_ZZ1fvEN3$_0D1Ev",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void () noexcept"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "explicitlyDefaulted": "default"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": ""
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 194,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 194,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 194,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "tagUsed": "class",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isGenericLambda": true,
+// CHECK-NEXT: "isLambda": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {},
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionTemplateDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 194,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 203,
+// CHECK-NEXT: "col": 35,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "operator()",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 201,
+// CHECK-NEXT: "col": 33,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 197,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 201,
+// CHECK-NEXT: "col": 33,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "auto:1",
+// CHECK-NEXT: "tagUsed": "class",
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 194,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 201,
+// CHECK-NEXT: "col": 33,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 203,
+// CHECK-NEXT: "col": 35,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "operator()",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "auto (auto) const"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "constexpr": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 201,
+// CHECK-NEXT: "col": 33,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 197,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 197,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "auto"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "auto"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isDependent": true,
+// CHECK-NEXT: "isInstantiationDependent": true,
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0,
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "name": "auto:1"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 202,
+// CHECK-NEXT: "col": 34,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 203,
+// CHECK-NEXT: "col": 35,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionTemplateDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 194,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 203,
+// CHECK-NEXT: "col": 35,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "operator auto (*)(type-parameter-0-0)",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 201,
+// CHECK-NEXT: "col": 33,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 197,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 201,
+// CHECK-NEXT: "col": 33,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "auto:1",
+// CHECK-NEXT: "tagUsed": "class",
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXConversionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 194,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 194,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 203,
+// CHECK-NEXT: "col": 35,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "operator auto (*)(type-parameter-0-0)",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "auto (*() const noexcept)(auto)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "constexpr": true
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionTemplateDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 194,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 203,
+// CHECK-NEXT: "col": 35,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "__invoke",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 201,
+// CHECK-NEXT: "col": 33,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 197,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 201,
+// CHECK-NEXT: "col": 33,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "auto:1",
+// CHECK-NEXT: "tagUsed": "class",
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 194,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 194,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 203,
+// CHECK-NEXT: "col": 35,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "__invoke",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "auto (auto)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "storageClass": "static",
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 201,
+// CHECK-NEXT: "col": 33,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 197,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 197,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "auto"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0,
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "name": "auto:1"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXDestructorDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 194,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 194,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 194,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "~(lambda at {{.*}}:5:26)",
+// CHECK-NEXT: "mangledName": "_ZZ1fvEN3$_1D1Ev",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void () noexcept"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "explicitlyDefaulted": "default"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": ""
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 219,
+// CHECK-NEXT: "line": 8,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 18
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 212,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 301,
+// CHECK-NEXT: "line": 10,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "CanPassInRegisters",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "trivial": true,
+// CHECK-NEXT: "userDeclared": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasUserDeclaredConstructor": true,
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {},
+// CHECK-NEXT: "moveCtor": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 219,
+// CHECK-NEXT: "line": 8,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 18
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 212,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 219,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 18
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "CanPassInRegisters",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXConstructorDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 243,
+// CHECK-NEXT: "line": 9,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 18
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 243,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 18
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 297,
+// CHECK-NEXT: "col": 57,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "CanPassInRegisters",
+// CHECK-NEXT: "mangledName": "_ZN18CanPassInRegistersC1ERKS_",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (const CanPassInRegisters &)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "constexpr": true,
+// CHECK-NEXT: "explicitlyDefaulted": "default",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 287,
+// CHECK-NEXT: "col": 47,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 262,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 286,
+// CHECK-NEXT: "col": 46,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const CanPassInRegisters &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "LValueReferenceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const CanPassInRegisters &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "qualTypeDetail": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const CanPassInRegisters"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "const",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ElaboratedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "CanPassInRegisters"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "CanPassInRegisters"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "CanPassInRegisters"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 314,
+// CHECK-NEXT: "line": 12,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 307,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 398,
+// CHECK-NEXT: "line": 14,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "CantPassInRegisters",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "trivial": true,
+// CHECK-NEXT: "userDeclared": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasUserDeclaredConstructor": true,
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {},
+// CHECK-NEXT: "moveCtor": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 314,
+// CHECK-NEXT: "line": 12,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 307,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 314,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "CantPassInRegisters",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXConstructorDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 339,
+// CHECK-NEXT: "line": 13,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 339,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 394,
+// CHECK-NEXT: "col": 58,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "CantPassInRegisters",
+// CHECK-NEXT: "mangledName": "_ZN19CantPassInRegistersC1ERKS_",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (const CantPassInRegisters &)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "explicitlyDeleted": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 385,
+// CHECK-NEXT: "col": 49,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 359,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 384,
+// CHECK-NEXT: "col": 48,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const CantPassInRegisters &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "LValueReferenceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const CantPassInRegisters &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "qualTypeDetail": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const CantPassInRegisters"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "const",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ElaboratedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "CantPassInRegisters"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "CantPassInRegisters"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "CantPassInRegisters"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 411,
+// CHECK-NEXT: "line": 16,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 7
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 404,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 422,
+// CHECK-NEXT: "line": 17,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "IsEmpty",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true,
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "isConstexpr": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 411,
+// CHECK-NEXT: "line": 16,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 7
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 404,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 411,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 7
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "IsEmpty",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 435,
+// CHECK-NEXT: "line": 19,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 428,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 459,
+// CHECK-NEXT: "line": 21,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "IsNotEmpty",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 435,
+// CHECK-NEXT: "line": 19,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 428,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 435,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "IsNotEmpty",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 455,
+// CHECK-NEXT: "line": 20,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 451,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 455,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 472,
+// CHECK-NEXT: "line": 23,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 11
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 465,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 497,
+// CHECK-NEXT: "line": 25,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "IsAggregate",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 472,
+// CHECK-NEXT: "line": 23,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 11
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 465,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 472,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 11
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "IsAggregate",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 493,
+// CHECK-NEXT: "line": 24,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 489,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 493,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 510,
+// CHECK-NEXT: "line": 27,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 14
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 503,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 548,
+// CHECK-NEXT: "line": 30,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "IsNotAggregate",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 510,
+// CHECK-NEXT: "line": 27,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 14
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 503,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 510,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 14
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "IsNotAggregate",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "AccessSpecDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 528,
+// CHECK-NEXT: "line": 28,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 7
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 528,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 7
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 535,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "access": "private"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 544,
+// CHECK-NEXT: "line": 29,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 540,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 544,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 561,
+// CHECK-NEXT: "line": 32,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 16
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 554,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 594,
+// CHECK-NEXT: "line": 34,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "IsStandardLayout",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true,
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "isConstexpr": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 561,
+// CHECK-NEXT: "line": 32,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 16
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 554,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 561,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 16
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "IsStandardLayout",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 588,
+// CHECK-NEXT: "line": 33,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 583,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 590,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "f",
+// CHECK-NEXT: "mangledName": "_ZN16IsStandardLayout1fEv",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 607,
+// CHECK-NEXT: "line": 36,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 600,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 651,
+// CHECK-NEXT: "line": 38,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "IsNotStandardLayout",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "nonTrivial": true,
+// CHECK-NEXT: "simple": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "nonTrivial": true,
+// CHECK-NEXT: "simple": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true,
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "isConstexpr": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "nonTrivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPolymorphic": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "nonTrivial": true,
+// CHECK-NEXT: "simple": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "nonTrivial": true,
+// CHECK-NEXT: "simple": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 607,
+// CHECK-NEXT: "line": 36,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 600,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 607,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "IsNotStandardLayout",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 645,
+// CHECK-NEXT: "line": 37,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 632,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 7
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 647,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "f",
+// CHECK-NEXT: "mangledName": "_ZN19IsNotStandardLayout1fEv",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "virtual": true
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 607,
+// CHECK-NEXT: "line": 36,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 607,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 607,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "operator=",
+// CHECK-NEXT: "mangledName": "_ZN19IsNotStandardLayoutaSERKS_",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "IsNotStandardLayout &(const IsNotStandardLayout &)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "constexpr": true,
+// CHECK-NEXT: "explicitlyDefaulted": "default",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 607,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 607,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 607,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const IsNotStandardLayout &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "LValueReferenceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const IsNotStandardLayout &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "qualTypeDetail": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const IsNotStandardLayout"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "const",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ElaboratedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "IsNotStandardLayout"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "IsNotStandardLayout"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "IsNotStandardLayout"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 607,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 607,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 607,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "operator=",
+// CHECK-NEXT: "mangledName": "_ZN19IsNotStandardLayoutaSEOS_",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "IsNotStandardLayout &(IsNotStandardLayout &&)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "constexpr": true,
+// CHECK-NEXT: "explicitlyDefaulted": "default",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 607,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 607,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 607,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "IsNotStandardLayout &&"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RValueReferenceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "IsNotStandardLayout &&"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "IsNotStandardLayout"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXDestructorDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 607,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 607,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 607,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "~IsNotStandardLayout",
+// CHECK-NEXT: "mangledName": "_ZN19IsNotStandardLayoutD1Ev",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "explicitlyDefaulted": "default"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 664,
+// CHECK-NEXT: "line": 40,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 657,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 687,
+// CHECK-NEXT: "line": 41,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "IsTriviallyCopyable",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true,
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "isConstexpr": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 664,
+// CHECK-NEXT: "line": 40,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 657,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 664,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "IsTriviallyCopyable",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 700,
+// CHECK-NEXT: "line": 43,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 22
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 693,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 786,
+// CHECK-NEXT: "line": 45,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "IsNotTriviallyCopyable",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "nonTrivial": true,
+// CHECK-NEXT: "userDeclared": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasUserDeclaredConstructor": true,
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "moveAssign": {},
+// CHECK-NEXT: "moveCtor": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 700,
+// CHECK-NEXT: "line": 43,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 22
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 693,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 700,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 22
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "IsNotTriviallyCopyable",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXConstructorDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 728,
+// CHECK-NEXT: "line": 44,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 22
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 728,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 22
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 783,
+// CHECK-NEXT: "col": 58,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "IsNotTriviallyCopyable",
+// CHECK-NEXT: "mangledName": "_ZN22IsNotTriviallyCopyableC1ERKS_",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (const IsNotTriviallyCopyable &)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 780,
+// CHECK-NEXT: "col": 55,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 751,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 779,
+// CHECK-NEXT: "col": 54,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const IsNotTriviallyCopyable &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "LValueReferenceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const IsNotTriviallyCopyable &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "qualTypeDetail": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const IsNotTriviallyCopyable"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "const",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ElaboratedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "IsNotTriviallyCopyable"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "IsNotTriviallyCopyable"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "IsNotTriviallyCopyable"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 782,
+// CHECK-NEXT: "col": 57,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 783,
+// CHECK-NEXT: "col": 58,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 799,
+// CHECK-NEXT: "line": 47,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 792,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 818,
+// CHECK-NEXT: "line": 49,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "IsPOD",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 799,
+// CHECK-NEXT: "line": 47,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 792,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 799,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "IsPOD",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 814,
+// CHECK-NEXT: "line": 48,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 810,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 814,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 831,
+// CHECK-NEXT: "line": 51,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 824,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 854,
+// CHECK-NEXT: "line": 53,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "IsNotPOD",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 831,
+// CHECK-NEXT: "line": 51,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 824,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 831,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "IsNotPOD",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 850,
+// CHECK-NEXT: "line": 52,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 845,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 850,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 867,
+// CHECK-NEXT: "line": 55,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 9
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 860,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 906,
+// CHECK-NEXT: "line": 57,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "IsTrivial",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true,
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "isConstexpr": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT: "hasUserDeclaredConstructor": true,
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 867,
+// CHECK-NEXT: "line": 55,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 9
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 860,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 867,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 9
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "IsTrivial",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXConstructorDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 882,
+// CHECK-NEXT: "line": 56,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 9
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 882,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 9
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 902,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "IsTrivial",
+// CHECK-NEXT: "mangledName": "_ZN9IsTrivialC1Ev",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "constexpr": true,
+// CHECK-NEXT: "explicitlyDefaulted": "default"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 919,
+// CHECK-NEXT: "line": 59,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 12
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 912,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 956,
+// CHECK-NEXT: "line": 61,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "IsNotTrivial",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true,
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "nonTrivial": true,
+// CHECK-NEXT: "userProvided": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasUserDeclaredConstructor": true,
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 919,
+// CHECK-NEXT: "line": 59,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 12
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 912,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 919,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 12
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "IsNotTrivial",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXConstructorDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 937,
+// CHECK-NEXT: "line": 60,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 12
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 937,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 12
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 953,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "IsNotTrivial",
+// CHECK-NEXT: "mangledName": "_ZN12IsNotTrivialC1Ev",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 952,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 953,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 969,
+// CHECK-NEXT: "line": 63,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 962,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1007,
+// CHECK-NEXT: "line": 65,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "IsPolymorphic",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "nonTrivial": true,
+// CHECK-NEXT: "simple": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "nonTrivial": true,
+// CHECK-NEXT: "simple": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true,
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "isConstexpr": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "nonTrivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPolymorphic": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "nonTrivial": true,
+// CHECK-NEXT: "simple": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "nonTrivial": true,
+// CHECK-NEXT: "simple": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 969,
+// CHECK-NEXT: "line": 63,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 962,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 969,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "IsPolymorphic",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1001,
+// CHECK-NEXT: "line": 64,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 988,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 7
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1003,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "f",
+// CHECK-NEXT: "mangledName": "_ZN13IsPolymorphic1fEv",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "virtual": true
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 969,
+// CHECK-NEXT: "line": 63,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 969,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 969,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "operator=",
+// CHECK-NEXT: "mangledName": "_ZN13IsPolymorphicaSERKS_",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "IsPolymorphic &(const IsPolymorphic &)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "constexpr": true,
+// CHECK-NEXT: "explicitlyDefaulted": "default",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 969,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 969,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 969,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const IsPolymorphic &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "LValueReferenceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const IsPolymorphic &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "qualTypeDetail": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const IsPolymorphic"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "const",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ElaboratedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "IsPolymorphic"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "IsPolymorphic"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "IsPolymorphic"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 969,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 969,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 969,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "operator=",
+// CHECK-NEXT: "mangledName": "_ZN13IsPolymorphicaSEOS_",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "IsPolymorphic &(IsPolymorphic &&)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "constexpr": true,
+// CHECK-NEXT: "explicitlyDefaulted": "default",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 969,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 969,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 969,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "IsPolymorphic &&"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RValueReferenceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "IsPolymorphic &&"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "IsPolymorphic"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXDestructorDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 969,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 969,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 969,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "~IsPolymorphic",
+// CHECK-NEXT: "mangledName": "_ZN13IsPolymorphicD1Ev",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "explicitlyDefaulted": "default"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1020,
+// CHECK-NEXT: "line": 67,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 16
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1013,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1053,
+// CHECK-NEXT: "line": 69,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "IsNotPolymorphic",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true,
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "isConstexpr": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1020,
+// CHECK-NEXT: "line": 67,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 16
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1013,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1020,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 16
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "IsNotPolymorphic",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1047,
+// CHECK-NEXT: "line": 68,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1042,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1049,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "f",
+// CHECK-NEXT: "mangledName": "_ZN16IsNotPolymorphic1fEv",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1066,
+// CHECK-NEXT: "line": 71,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1059,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1105,
+// CHECK-NEXT: "line": 73,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "IsAbstract",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "nonTrivial": true,
+// CHECK-NEXT: "simple": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "nonTrivial": true,
+// CHECK-NEXT: "simple": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true,
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "isConstexpr": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "nonTrivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT: "isAbstract": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPolymorphic": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "nonTrivial": true,
+// CHECK-NEXT: "simple": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "nonTrivial": true,
+// CHECK-NEXT: "simple": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1066,
+// CHECK-NEXT: "line": 71,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1059,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1066,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "IsAbstract",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1095,
+// CHECK-NEXT: "line": 72,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1082,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 7
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1101,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "f",
+// CHECK-NEXT: "mangledName": "_ZN10IsAbstract1fEv",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "virtual": true,
+// CHECK-NEXT: "pure": true
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1066,
+// CHECK-NEXT: "line": 71,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1066,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1066,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "operator=",
+// CHECK-NEXT: "mangledName": "_ZN10IsAbstractaSERKS_",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "IsAbstract &(const IsAbstract &)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "constexpr": true,
+// CHECK-NEXT: "explicitlyDefaulted": "default",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1066,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1066,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1066,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const IsAbstract &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "LValueReferenceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const IsAbstract &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "qualTypeDetail": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const IsAbstract"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "const",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ElaboratedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "IsAbstract"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "IsAbstract"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "IsAbstract"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1066,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1066,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1066,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "operator=",
+// CHECK-NEXT: "mangledName": "_ZN10IsAbstractaSEOS_",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "IsAbstract &(IsAbstract &&)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "constexpr": true,
+// CHECK-NEXT: "explicitlyDefaulted": "default",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1066,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1066,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1066,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "IsAbstract &&"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RValueReferenceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "IsAbstract &&"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "IsAbstract"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXDestructorDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1066,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1066,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1066,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "~IsAbstract",
+// CHECK-NEXT: "mangledName": "_ZN10IsAbstractD1Ev",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "explicitlyDefaulted": "default"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1118,
+// CHECK-NEXT: "line": 75,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1111,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1156,
+// CHECK-NEXT: "line": 77,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "IsNotAbstract",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "nonTrivial": true,
+// CHECK-NEXT: "simple": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "nonTrivial": true,
+// CHECK-NEXT: "simple": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true,
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "isConstexpr": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "nonTrivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPolymorphic": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "nonTrivial": true,
+// CHECK-NEXT: "simple": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "nonTrivial": true,
+// CHECK-NEXT: "simple": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1118,
+// CHECK-NEXT: "line": 75,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1111,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1118,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "IsNotAbstract",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1150,
+// CHECK-NEXT: "line": 76,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1137,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 7
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1152,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "f",
+// CHECK-NEXT: "mangledName": "_ZN13IsNotAbstract1fEv",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "virtual": true
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1118,
+// CHECK-NEXT: "line": 75,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1118,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1118,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "operator=",
+// CHECK-NEXT: "mangledName": "_ZN13IsNotAbstractaSERKS_",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "IsNotAbstract &(const IsNotAbstract &)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "constexpr": true,
+// CHECK-NEXT: "explicitlyDefaulted": "default",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1118,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1118,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1118,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const IsNotAbstract &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "LValueReferenceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const IsNotAbstract &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "qualTypeDetail": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const IsNotAbstract"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "const",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ElaboratedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "IsNotAbstract"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "IsNotAbstract"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "IsNotAbstract"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1118,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1118,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1118,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "operator=",
+// CHECK-NEXT: "mangledName": "_ZN13IsNotAbstractaSEOS_",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "IsNotAbstract &(IsNotAbstract &&)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "constexpr": true,
+// CHECK-NEXT: "explicitlyDefaulted": "default",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1118,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1118,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1118,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "IsNotAbstract &&"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RValueReferenceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "IsNotAbstract &&"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "IsNotAbstract"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXDestructorDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1118,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1118,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1118,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "~IsNotAbstract",
+// CHECK-NEXT: "mangledName": "_ZN13IsNotAbstractD1Ev",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "explicitlyDefaulted": "default"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1169,
+// CHECK-NEXT: "line": 79,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 9
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1162,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1209,
+// CHECK-NEXT: "line": 81,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "IsLiteral",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true,
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "isConstexpr": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "trivial": true,
+// CHECK-NEXT: "userDeclared": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {},
+// CHECK-NEXT: "moveCtor": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1169,
+// CHECK-NEXT: "line": 79,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 9
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1162,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1169,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 9
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "IsLiteral",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXDestructorDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1184,
+// CHECK-NEXT: "line": 80,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1184,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1205,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "~IsLiteral",
+// CHECK-NEXT: "mangledName": "_ZN9IsLiteralD1Ev",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "explicitlyDefaulted": "default"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1222,
+// CHECK-NEXT: "line": 83,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 12
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1215,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1260,
+// CHECK-NEXT: "line": 85,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "IsNotLiteral",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true,
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "isConstexpr": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "nonTrivial": true,
+// CHECK-NEXT: "userDeclared": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "moveAssign": {},
+// CHECK-NEXT: "moveCtor": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1222,
+// CHECK-NEXT: "line": 83,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 12
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1215,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1222,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 12
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "IsNotLiteral",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXDestructorDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1240,
+// CHECK-NEXT: "line": 84,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1240,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1257,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "~IsNotLiteral",
+// CHECK-NEXT: "mangledName": "_ZN12IsNotLiteralD1Ev",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void () noexcept"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1256,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1257,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1273,
+// CHECK-NEXT: "line": 87,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 26
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1266,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1338,
+// CHECK-NEXT: "line": 89,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "HasUserDeclaredConstructor",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true,
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "nonTrivial": true,
+// CHECK-NEXT: "userProvided": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasUserDeclaredConstructor": true,
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1273,
+// CHECK-NEXT: "line": 87,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 26
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1266,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1273,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 26
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "HasUserDeclaredConstructor",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXConstructorDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1305,
+// CHECK-NEXT: "line": 88,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 26
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1305,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 26
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1335,
+// CHECK-NEXT: "col": 33,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "HasUserDeclaredConstructor",
+// CHECK-NEXT: "mangledName": "_ZN26HasUserDeclaredConstructorC1Ev",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1334,
+// CHECK-NEXT: "col": 32,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1335,
+// CHECK-NEXT: "col": 33,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1351,
+// CHECK-NEXT: "line": 91,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 28
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1344,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1383,
+// CHECK-NEXT: "line": 92,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "HasNoUserDeclaredConstructor",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true,
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "isConstexpr": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1351,
+// CHECK-NEXT: "line": 91,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 28
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1344,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1351,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 28
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "HasNoUserDeclaredConstructor",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1396,
+// CHECK-NEXT: "line": 94,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 34
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1389,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1487,
+// CHECK-NEXT: "line": 96,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "HasConstexprNonCopyMoveConstructor",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true,
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "isConstexpr": true,
+// CHECK-NEXT: "nonTrivial": true,
+// CHECK-NEXT: "userProvided": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT: "hasUserDeclaredConstructor": true,
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1396,
+// CHECK-NEXT: "line": 94,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 34
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1389,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1396,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 34
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "HasConstexprNonCopyMoveConstructor",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXConstructorDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1446,
+// CHECK-NEXT: "line": 95,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 34
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1436,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 9
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1484,
+// CHECK-NEXT: "col": 51,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "HasConstexprNonCopyMoveConstructor",
+// CHECK-NEXT: "mangledName": "_ZN34HasConstexprNonCopyMoveConstructorC1Ev",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "constexpr": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1483,
+// CHECK-NEXT: "col": 50,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1484,
+// CHECK-NEXT: "col": 51,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1500,
+// CHECK-NEXT: "line": 98,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 36
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1493,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1585,
+// CHECK-NEXT: "line": 100,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "HasNoConstexprNonCopyMoveConstructor",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true,
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "nonTrivial": true,
+// CHECK-NEXT: "userProvided": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasUserDeclaredConstructor": true,
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1500,
+// CHECK-NEXT: "line": 98,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 36
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1493,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1500,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 36
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "HasNoConstexprNonCopyMoveConstructor",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXConstructorDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1542,
+// CHECK-NEXT: "line": 99,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 36
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1542,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 36
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1582,
+// CHECK-NEXT: "col": 43,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "HasNoConstexprNonCopyMoveConstructor",
+// CHECK-NEXT: "mangledName": "_ZN36HasNoConstexprNonCopyMoveConstructorC1Ev",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1581,
+// CHECK-NEXT: "col": 42,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1582,
+// CHECK-NEXT: "col": 43,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1598,
+// CHECK-NEXT: "line": 102,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 16
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1591,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1636,
+// CHECK-NEXT: "line": 104,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "HasMutableFields",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasMutableFields": true,
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1598,
+// CHECK-NEXT: "line": 102,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 16
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1591,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1598,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 16
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "HasMutableFields",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1632,
+// CHECK-NEXT: "line": 103,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1620,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 7
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1632,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "mutable": true,
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1649,
+// CHECK-NEXT: "line": 106,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 18
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1642,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1681,
+// CHECK-NEXT: "line": 108,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "HasNoMutableFields",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1649,
+// CHECK-NEXT: "line": 106,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 18
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1642,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1649,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 18
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "HasNoMutableFields",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1677,
+// CHECK-NEXT: "line": 107,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1673,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1677,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1694,
+// CHECK-NEXT: "line": 110,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 17
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1687,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1744,
+// CHECK-NEXT: "line": 114,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "HasVariantMembers",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasVariantMembers": true,
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1694,
+// CHECK-NEXT: "line": 110,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 17
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1687,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1694,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 17
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "HasVariantMembers",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1717,
+// CHECK-NEXT: "line": 111,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1717,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1740,
+// CHECK-NEXT: "line": 113,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "tagUsed": "union",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasVariantMembers": true,
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1734,
+// CHECK-NEXT: "line": 112,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1730,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1734,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1717,
+// CHECK-NEXT: "line": 111,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1717,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1717,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "HasVariantMembers::(anonymous union at {{.*}}:111:3)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "HasVariantMembers::(anonymous union at {{.*}}:111:3)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "union"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IndirectFieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1734,
+// CHECK-NEXT: "line": 112,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1734,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1734,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "i"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1757,
+// CHECK-NEXT: "line": 116,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1750,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1780,
+// CHECK-NEXT: "line": 117,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "HasNoVariantMembers",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true,
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "isConstexpr": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1757,
+// CHECK-NEXT: "line": 116,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1750,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1757,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "HasNoVariantMembers",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1793,
+// CHECK-NEXT: "line": 119,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 22
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1786,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1834,
+// CHECK-NEXT: "line": 121,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "AllowsConstDefaultInit",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true,
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "isConstexpr": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "nonTrivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1793,
+// CHECK-NEXT: "line": 119,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 22
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1786,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1793,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 22
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "AllowsConstDefaultInit",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1825,
+// CHECK-NEXT: "line": 120,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1821,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1829,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasInClassInitializer": true,
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1829,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1829,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "12"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1847,
+// CHECK-NEXT: "line": 123,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 28
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1840,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1889,
+// CHECK-NEXT: "line": 125,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "DoesNotAllowConstDefaultInit",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1847,
+// CHECK-NEXT: "line": 123,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 28
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1840,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1847,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 28
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "DoesNotAllowConstDefaultInit",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1885,
+// CHECK-NEXT: "line": 124,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1881,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1885,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
diff --git a/clang/test/AST/ast-dump-records-json.cpp b/clang/test/AST/ast-dump-records-json.cpp
index a7eb8771d3f02..a186080d160c5 100644
--- a/clang/test/AST/ast-dump-records-json.cpp
+++ b/clang/test/AST/ast-dump-records-json.cpp
@@ -1,4256 +1,5115 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -std=c++17 -ast-dump=json %s | FileCheck %s
-
-struct A;
-struct B;
-
-struct A {
- int a;
- int b, c;
- int d : 12;
- int : 0;
- int e : 10;
- B *f;
-};
-
-struct C {
- struct {
- int a;
- } b;
-
- union {
- int c;
- float d;
- };
-
- struct {
- int e, f;
- };
-};
-
-struct D {
- int a;
- int b[10];
- int c[];
-};
-
-union E;
-
-union F;
-
-union E {
- int a;
- int b, c;
- int d : 12;
- int : 0;
- int e : 10;
- B *f;
-};
-
-union G {
- struct {
- int a;
- } b;
-
- union {
- int c;
- float d;
- };
-
- struct {
- int e, f;
- };
-};
-
-struct Base1 {};
-struct Base2 {};
-struct Base3 {};
-
-struct Derived1 : Base1 {
-};
-
-struct Derived2 : private Base1 {
-};
-
-struct Derived3 : virtual Base1 {
-};
-
-struct Derived4 : Base1, virtual Base2, protected Base3 {
-};
-
-struct Derived5 : protected virtual Base1 {
-};
-
-template <typename... Bases>
-struct Derived6 : virtual public Bases... {
-};
-
-// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
-// using --filters=CXXRecordDecl
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "name": "__NSConstantString_tag"
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "name": "__va_list_tag"
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 3,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "A",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 4,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "B",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 6,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 13,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "previousDecl": "0x{{.*}}",
-// CHECK-NEXT: "name": "A",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 6,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "A",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 7,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 8,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "c",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 9,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "d",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "isBitfield": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ConstantExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "12",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "12"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 10,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "isBitfield": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ConstantExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 11,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "e",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "isBitfield": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ConstantExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "10",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "10"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 12,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "f",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "B *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 15,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 28,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "C",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasVariantMembers": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 15,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "C",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 16,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 18,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 17,
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 18,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 16,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 18,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "C::(unnamed struct at {{.*}}:16:3)",
-// CHECK-NEXT: "qualType": "struct (unnamed struct at {{.*}}:16:3)"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 20,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 23,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "tagUsed": "union",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasVariantMembers": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 21,
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "c",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 22,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "d",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 20,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "C::(anonymous union at {{.*}}:20:3)"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IndirectFieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 21,
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "c"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IndirectFieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 22,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "d"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 25,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 27,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 26,
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "e",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "f",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 25,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "C::(anonymous struct at {{.*}}:25:3)"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IndirectFieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 26,
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "e"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IndirectFieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "f"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 30,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 34,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "D",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 30,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "D",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 31,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 32,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int[10]"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 33,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "c",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int[]"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 36,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "E",
-// CHECK-NEXT: "tagUsed": "union"
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 38,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "F",
-// CHECK-NEXT: "tagUsed": "union"
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 40,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 47,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "previousDecl": "0x{{.*}}",
-// CHECK-NEXT: "name": "E",
-// CHECK-NEXT: "tagUsed": "union",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasVariantMembers": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 40,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "E",
-// CHECK-NEXT: "tagUsed": "union"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 41,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 42,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "c",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 43,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "d",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "isBitfield": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ConstantExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "12",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "12"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 44,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "isBitfield": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ConstantExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 45,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "e",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "isBitfield": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ConstantExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "10",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "10"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 46,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "f",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "B *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 49,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 62,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "G",
-// CHECK-NEXT: "tagUsed": "union",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasVariantMembers": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 49,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "G",
-// CHECK-NEXT: "tagUsed": "union"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 50,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 52,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 51,
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 52,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 50,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 52,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "G::(unnamed struct at {{.*}}:50:3)",
-// CHECK-NEXT: "qualType": "struct (unnamed struct at {{.*}}:50:3)"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 54,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 57,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "tagUsed": "union",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasVariantMembers": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 55,
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "c",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 56,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "d",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 54,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "G::(anonymous union at {{.*}}:54:3)"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IndirectFieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 55,
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "c"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IndirectFieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 56,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "d"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 59,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 61,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 60,
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "e",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "f",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 59,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "G::(anonymous struct at {{.*}}:59:3)"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IndirectFieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 60,
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "e"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IndirectFieldDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "f"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 64,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "Base1",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "Base1",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "operator=",
-// CHECK-NEXT: "mangledName": "_ZN5Base1aSERKS_",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Base1 &(const Base1 &)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true,
-// CHECK-NEXT: "explicitlyDefaulted": "default",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const Base1 &"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "operator=",
-// CHECK-NEXT: "mangledName": "_ZN5Base1aSEOS_",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Base1 &(Base1 &&)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true,
-// CHECK-NEXT: "explicitlyDefaulted": "default",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Base1 &&"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXDestructorDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "~Base1",
-// CHECK-NEXT: "mangledName": "_ZN5Base1D1Ev",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "explicitlyDefaulted": "default"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 65,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "Base2",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "Base2",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "operator=",
-// CHECK-NEXT: "mangledName": "_ZN5Base2aSERKS_",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Base2 &(const Base2 &)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true,
-// CHECK-NEXT: "explicitlyDefaulted": "default",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const Base2 &"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "operator=",
-// CHECK-NEXT: "mangledName": "_ZN5Base2aSEOS_",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Base2 &(Base2 &&)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true,
-// CHECK-NEXT: "explicitlyDefaulted": "default",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Base2 &&"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXDestructorDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "~Base2",
-// CHECK-NEXT: "mangledName": "_ZN5Base2D1Ev",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "explicitlyDefaulted": "default"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 66,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "Base3",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "Base3",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "operator=",
-// CHECK-NEXT: "mangledName": "_ZN5Base3aSERKS_",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Base3 &(const Base3 &)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true,
-// CHECK-NEXT: "explicitlyDefaulted": "default",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const Base3 &"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "operator=",
-// CHECK-NEXT: "mangledName": "_ZN5Base3aSEOS_",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Base3 &(Base3 &&)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true,
-// CHECK-NEXT: "explicitlyDefaulted": "default",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Base3 &&"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXDestructorDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "~Base3",
-// CHECK-NEXT: "mangledName": "_ZN5Base3D1Ev",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "explicitlyDefaulted": "default"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 68,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 69,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Derived1",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "bases": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "access": "public",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Base1"
-// CHECK-NEXT: },
-// CHECK-NEXT: "writtenAccess": "none"
-// CHECK-NEXT: }
-// CHECK-NEXT: ],
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 68,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "Derived1",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 71,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 72,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Derived2",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "bases": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "access": "private",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Base1"
-// CHECK-NEXT: },
-// CHECK-NEXT: "writtenAccess": "private"
-// CHECK-NEXT: }
-// CHECK-NEXT: ],
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 71,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "Derived2",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 74,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 75,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Derived3",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "nonTrivial": true,
-// CHECK-NEXT: "simple": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "nonTrivial": true,
-// CHECK-NEXT: "simple": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "nonTrivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "nonTrivial": true,
-// CHECK-NEXT: "simple": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "nonTrivial": true,
-// CHECK-NEXT: "simple": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "bases": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "access": "public",
-// CHECK-NEXT: "isVirtual": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Base1"
-// CHECK-NEXT: },
-// CHECK-NEXT: "writtenAccess": "none"
-// CHECK-NEXT: }
-// CHECK-NEXT: ],
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 74,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "Derived3",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "operator=",
-// CHECK-NEXT: "mangledName": "_ZN8Derived3aSERKS_",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Derived3 &(const Derived3 &)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "explicitlyDefaulted": "default",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const Derived3 &"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "operator=",
-// CHECK-NEXT: "mangledName": "_ZN8Derived3aSEOS_",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Derived3 &(Derived3 &&)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "explicitlyDefaulted": "default",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Derived3 &&"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXDestructorDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "~Derived3",
-// CHECK-NEXT: "mangledName": "_ZN8Derived3D1Ev",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "explicitlyDefaulted": "default"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 77,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 78,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Derived4",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "nonTrivial": true,
-// CHECK-NEXT: "simple": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "nonTrivial": true,
-// CHECK-NEXT: "simple": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "nonTrivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "nonTrivial": true,
-// CHECK-NEXT: "simple": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "nonTrivial": true,
-// CHECK-NEXT: "simple": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "bases": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "access": "public",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Base1"
-// CHECK-NEXT: },
-// CHECK-NEXT: "writtenAccess": "none"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "access": "public",
-// CHECK-NEXT: "isVirtual": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Base2"
-// CHECK-NEXT: },
-// CHECK-NEXT: "writtenAccess": "none"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "access": "protected",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Base3"
-// CHECK-NEXT: },
-// CHECK-NEXT: "writtenAccess": "protected"
-// CHECK-NEXT: }
-// CHECK-NEXT: ],
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 77,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "Derived4",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "operator=",
-// CHECK-NEXT: "mangledName": "_ZN8Derived4aSERKS_",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Derived4 &(const Derived4 &)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "explicitlyDefaulted": "default",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const Derived4 &"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "operator=",
-// CHECK-NEXT: "mangledName": "_ZN8Derived4aSEOS_",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Derived4 &(Derived4 &&)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "explicitlyDefaulted": "default",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Derived4 &&"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXDestructorDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "~Derived4",
-// CHECK-NEXT: "mangledName": "_ZN8Derived4D1Ev",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "explicitlyDefaulted": "default"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 80,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 81,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Derived5",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "nonTrivial": true,
-// CHECK-NEXT: "simple": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "nonTrivial": true,
-// CHECK-NEXT: "simple": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "nonTrivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "nonTrivial": true,
-// CHECK-NEXT: "simple": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "nonTrivial": true,
-// CHECK-NEXT: "simple": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "bases": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "access": "protected",
-// CHECK-NEXT: "isVirtual": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Base1"
-// CHECK-NEXT: },
-// CHECK-NEXT: "writtenAccess": "protected"
-// CHECK-NEXT: }
-// CHECK-NEXT: ],
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 80,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "Derived5",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "operator=",
-// CHECK-NEXT: "mangledName": "_ZN8Derived5aSERKS_",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Derived5 &(const Derived5 &)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "explicitlyDefaulted": "default",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const Derived5 &"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "operator=",
-// CHECK-NEXT: "mangledName": "_ZN8Derived5aSEOS_",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Derived5 &(Derived5 &&)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "explicitlyDefaulted": "default",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Derived5 &&"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXDestructorDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "~Derived5",
-// CHECK-NEXT: "mangledName": "_ZN8Derived5D1Ev",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "explicitlyDefaulted": "default"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 84,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 85,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Derived6",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "bases": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "access": "public",
-// CHECK-NEXT: "isPackExpansion": true,
-// CHECK-NEXT: "isVirtual": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Bases"
-// CHECK-NEXT: },
-// CHECK-NEXT: "writtenAccess": "public"
-// CHECK-NEXT: }
-// CHECK-NEXT: ],
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 84,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "Derived6",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
+// RUN: %clang_cc1 -triple x86_64-unknown-unknown -std=c++17 -ast-dump=json %s | FileCheck %s
+
+struct A;
+struct B;
+
+struct A {
+ int a;
+ int b, c;
+ int d : 12;
+ int : 0;
+ int e : 10;
+ B *f;
+};
+
+struct C {
+ struct {
+ int a;
+ } b;
+
+ union {
+ int c;
+ float d;
+ };
+
+ struct {
+ int e, f;
+ };
+};
+
+struct D {
+ int a;
+ int b[10];
+ int c[];
+};
+
+union E;
+
+union F;
+
+union E {
+ int a;
+ int b, c;
+ int d : 12;
+ int : 0;
+ int e : 10;
+ B *f;
+};
+
+union G {
+ struct {
+ int a;
+ } b;
+
+ union {
+ int c;
+ float d;
+ };
+
+ struct {
+ int e, f;
+ };
+};
+
+struct Base1 {};
+struct Base2 {};
+struct Base3 {};
+
+struct Derived1 : Base1 {
+};
+
+struct Derived2 : private Base1 {
+};
+
+struct Derived3 : virtual Base1 {
+};
+
+struct Derived4 : Base1, virtual Base2, protected Base3 {
+};
+
+struct Derived5 : protected virtual Base1 {
+};
+
+template <typename... Bases>
+struct Derived6 : virtual public Bases... {
+};
+
+// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
+// using --filters=CXXRecordDecl
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "__NSConstantString_tag"
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "__va_list_tag"
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 104,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 3,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 97,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 104,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "A",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 115,
+// CHECK-NEXT: "line": 4,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 108,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 115,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "B",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 128,
+// CHECK-NEXT: "line": 6,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 121,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 207,
+// CHECK-NEXT: "line": 13,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "previousDecl": "0x{{.*}}",
+// CHECK-NEXT: "name": "A",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 128,
+// CHECK-NEXT: "line": 6,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 121,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 128,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "A",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 139,
+// CHECK-NEXT: "line": 7,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 135,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 139,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 149,
+// CHECK-NEXT: "line": 8,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 145,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 149,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 152,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 145,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 152,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "c",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 162,
+// CHECK-NEXT: "line": 9,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 158,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 166,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "d",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isBitfield": true,
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ConstantExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 166,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 166,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "12",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 166,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 166,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "12"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 177,
+// CHECK-NEXT: "line": 10,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 173,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 179,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isBitfield": true,
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ConstantExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 179,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 179,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 179,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 179,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 189,
+// CHECK-NEXT: "line": 11,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 185,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 193,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "e",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isBitfield": true,
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ConstantExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 193,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 193,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "10",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 193,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 193,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "10"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 203,
+// CHECK-NEXT: "line": 12,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 200,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 203,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "f",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "B *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "B *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "B"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 220,
+// CHECK-NEXT: "line": 15,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 213,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 337,
+// CHECK-NEXT: "line": 28,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "C",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasVariantMembers": true,
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 220,
+// CHECK-NEXT: "line": 15,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 213,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 220,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "C",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 227,
+// CHECK-NEXT: "line": 16,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 227,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 251,
+// CHECK-NEXT: "line": 18,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 245,
+// CHECK-NEXT: "line": 17,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 241,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 245,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 253,
+// CHECK-NEXT: "line": 18,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 227,
+// CHECK-NEXT: "line": 16,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 253,
+// CHECK-NEXT: "line": 18,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "C::(unnamed struct at {{.*}}:16:3)",
+// CHECK-NEXT: "qualType": "struct (unnamed struct at {{.*}}:16:3)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "C::(unnamed struct at {{.*}}:16:3)",
+// CHECK-NEXT: "qualType": "struct (unnamed struct at {{.*}}:16:3)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 261,
+// CHECK-NEXT: "line": 20,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 261,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 298,
+// CHECK-NEXT: "line": 23,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "tagUsed": "union",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasVariantMembers": true,
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 278,
+// CHECK-NEXT: "line": 21,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 274,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 278,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "c",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 292,
+// CHECK-NEXT: "line": 22,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 286,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 292,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "d",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "float"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "float"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "fpp"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 261,
+// CHECK-NEXT: "line": 20,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 261,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 261,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "C::(anonymous union at {{.*}}:20:3)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "C::(anonymous union at {{.*}}:20:3)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "union"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IndirectFieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 278,
+// CHECK-NEXT: "line": 21,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 278,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 278,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "c"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IndirectFieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 292,
+// CHECK-NEXT: "line": 22,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 292,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 292,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "d"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 306,
+// CHECK-NEXT: "line": 25,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 306,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 333,
+// CHECK-NEXT: "line": 27,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 324,
+// CHECK-NEXT: "line": 26,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 324,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "e",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 327,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 320,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 327,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "f",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 306,
+// CHECK-NEXT: "line": 25,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 306,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 306,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "C::(anonymous struct at {{.*}}:25:3)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "C::(anonymous struct at {{.*}}:25:3)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IndirectFieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 324,
+// CHECK-NEXT: "line": 26,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 324,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 324,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "e"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IndirectFieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 327,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 327,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 327,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "f"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 350,
+// CHECK-NEXT: "line": 30,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 343,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 391,
+// CHECK-NEXT: "line": 34,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "D",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 350,
+// CHECK-NEXT: "line": 30,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 343,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 350,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "D",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 361,
+// CHECK-NEXT: "line": 31,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 357,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 361,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 371,
+// CHECK-NEXT: "line": 32,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 367,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 375,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int[10]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int[10]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "array"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 385,
+// CHECK-NEXT: "line": 33,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 381,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 387,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "c",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int[]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int[]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "array"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 403,
+// CHECK-NEXT: "line": 36,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 397,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 403,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "E",
+// CHECK-NEXT: "tagUsed": "union"
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 415,
+// CHECK-NEXT: "line": 38,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 409,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 415,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "F",
+// CHECK-NEXT: "tagUsed": "union"
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 427,
+// CHECK-NEXT: "line": 40,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 421,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 506,
+// CHECK-NEXT: "line": 47,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "previousDecl": "0x{{.*}}",
+// CHECK-NEXT: "name": "E",
+// CHECK-NEXT: "tagUsed": "union",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasVariantMembers": true,
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 427,
+// CHECK-NEXT: "line": 40,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 421,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 427,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "E",
+// CHECK-NEXT: "tagUsed": "union"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 438,
+// CHECK-NEXT: "line": 41,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 434,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 438,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 448,
+// CHECK-NEXT: "line": 42,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 444,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 448,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 451,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 444,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 451,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "c",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 461,
+// CHECK-NEXT: "line": 43,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 457,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 465,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "d",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isBitfield": true,
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ConstantExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 465,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 465,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "12",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 465,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 465,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "12"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 476,
+// CHECK-NEXT: "line": 44,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 472,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 478,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isBitfield": true,
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ConstantExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 478,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 478,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 478,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 478,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 488,
+// CHECK-NEXT: "line": 45,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 484,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 492,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "e",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isBitfield": true,
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ConstantExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 492,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 492,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "10",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 492,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 492,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "10"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 502,
+// CHECK-NEXT: "line": 46,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 499,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 502,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "f",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "B *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 518,
+// CHECK-NEXT: "line": 49,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 512,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 635,
+// CHECK-NEXT: "line": 62,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "G",
+// CHECK-NEXT: "tagUsed": "union",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasVariantMembers": true,
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 518,
+// CHECK-NEXT: "line": 49,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 512,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 518,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "G",
+// CHECK-NEXT: "tagUsed": "union"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 525,
+// CHECK-NEXT: "line": 50,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 525,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 549,
+// CHECK-NEXT: "line": 52,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 543,
+// CHECK-NEXT: "line": 51,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 539,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 543,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 551,
+// CHECK-NEXT: "line": 52,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 525,
+// CHECK-NEXT: "line": 50,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 551,
+// CHECK-NEXT: "line": 52,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "G::(unnamed struct at {{.*}}:50:3)",
+// CHECK-NEXT: "qualType": "struct (unnamed struct at {{.*}}:50:3)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "G::(unnamed struct at {{.*}}:50:3)",
+// CHECK-NEXT: "qualType": "struct (unnamed struct at {{.*}}:50:3)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 559,
+// CHECK-NEXT: "line": 54,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 559,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 596,
+// CHECK-NEXT: "line": 57,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "tagUsed": "union",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasVariantMembers": true,
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 576,
+// CHECK-NEXT: "line": 55,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 572,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 576,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "c",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 590,
+// CHECK-NEXT: "line": 56,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 584,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 590,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "d",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "float"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "fpp"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 559,
+// CHECK-NEXT: "line": 54,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 559,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 559,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "G::(anonymous union at {{.*}}:54:3)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "G::(anonymous union at {{.*}}:54:3)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "union"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IndirectFieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 576,
+// CHECK-NEXT: "line": 55,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 576,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 576,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "c"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IndirectFieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 590,
+// CHECK-NEXT: "line": 56,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 590,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 590,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "d"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 604,
+// CHECK-NEXT: "line": 59,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 604,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 631,
+// CHECK-NEXT: "line": 61,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 622,
+// CHECK-NEXT: "line": 60,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 618,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 622,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "e",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 625,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 618,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 625,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "f",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 604,
+// CHECK-NEXT: "line": 59,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 604,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 604,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "G::(anonymous struct at {{.*}}:59:3)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "G::(anonymous struct at {{.*}}:59:3)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IndirectFieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 622,
+// CHECK-NEXT: "line": 60,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 622,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 622,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "e"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IndirectFieldDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 625,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 625,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 625,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "f"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 648,
+// CHECK-NEXT: "line": 64,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 641,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 655,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "Base1",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true,
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "isConstexpr": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 648,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 641,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 648,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "Base1",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 648,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 648,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 648,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "operator=",
+// CHECK-NEXT: "mangledName": "_ZN5Base1aSERKS_",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Base1 &(const Base1 &)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "constexpr": true,
+// CHECK-NEXT: "explicitlyDefaulted": "default",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 648,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 648,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 648,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const Base1 &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "LValueReferenceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const Base1 &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "qualTypeDetail": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const Base1"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "const",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ElaboratedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Base1"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Base1"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "Base1"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 648,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 648,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 648,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "operator=",
+// CHECK-NEXT: "mangledName": "_ZN5Base1aSEOS_",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Base1 &(Base1 &&)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "constexpr": true,
+// CHECK-NEXT: "explicitlyDefaulted": "default",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 648,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 648,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 648,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Base1 &&"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RValueReferenceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Base1 &&"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "Base1"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXDestructorDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 648,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 648,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 648,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "~Base1",
+// CHECK-NEXT: "mangledName": "_ZN5Base1D1Ev",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "explicitlyDefaulted": "default"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 666,
+// CHECK-NEXT: "line": 65,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 659,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 673,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "Base2",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true,
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "isConstexpr": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 666,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 659,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 666,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "Base2",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 666,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 666,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 666,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "operator=",
+// CHECK-NEXT: "mangledName": "_ZN5Base2aSERKS_",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Base2 &(const Base2 &)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "constexpr": true,
+// CHECK-NEXT: "explicitlyDefaulted": "default",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 666,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 666,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 666,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const Base2 &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "LValueReferenceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const Base2 &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "qualTypeDetail": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const Base2"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "const",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ElaboratedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Base2"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Base2"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "Base2"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 666,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 666,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 666,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "operator=",
+// CHECK-NEXT: "mangledName": "_ZN5Base2aSEOS_",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Base2 &(Base2 &&)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "constexpr": true,
+// CHECK-NEXT: "explicitlyDefaulted": "default",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 666,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 666,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 666,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Base2 &&"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RValueReferenceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Base2 &&"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "Base2"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXDestructorDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 666,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 666,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 666,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "~Base2",
+// CHECK-NEXT: "mangledName": "_ZN5Base2D1Ev",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "explicitlyDefaulted": "default"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 684,
+// CHECK-NEXT: "line": 66,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 677,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 691,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "Base3",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true,
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "isConstexpr": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 684,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 677,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 684,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "Base3",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 684,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 684,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 684,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "operator=",
+// CHECK-NEXT: "mangledName": "_ZN5Base3aSERKS_",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Base3 &(const Base3 &)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "constexpr": true,
+// CHECK-NEXT: "explicitlyDefaulted": "default",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 684,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 684,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 684,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const Base3 &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "LValueReferenceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const Base3 &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "qualTypeDetail": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const Base3"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "const",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ElaboratedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Base3"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Base3"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "Base3"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 684,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 684,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 684,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "operator=",
+// CHECK-NEXT: "mangledName": "_ZN5Base3aSEOS_",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Base3 &(Base3 &&)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "constexpr": true,
+// CHECK-NEXT: "explicitlyDefaulted": "default",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 684,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 684,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 684,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Base3 &&"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RValueReferenceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Base3 &&"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "Base3"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXDestructorDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 684,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 684,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 684,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "~Base3",
+// CHECK-NEXT: "mangledName": "_ZN5Base3D1Ev",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "explicitlyDefaulted": "default"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 704,
+// CHECK-NEXT: "line": 68,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 697,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 724,
+// CHECK-NEXT: "line": 69,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Derived1",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true,
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "isConstexpr": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "bases": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "access": "public",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Base1"
+// CHECK-NEXT: },
+// CHECK-NEXT: "writtenAccess": "none"
+// CHECK-NEXT: }
+// CHECK-NEXT: ],
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 704,
+// CHECK-NEXT: "line": 68,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 697,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 704,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "Derived1",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 737,
+// CHECK-NEXT: "line": 71,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 730,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 765,
+// CHECK-NEXT: "line": 72,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Derived2",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true,
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "isConstexpr": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "bases": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "access": "private",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Base1"
+// CHECK-NEXT: },
+// CHECK-NEXT: "writtenAccess": "private"
+// CHECK-NEXT: }
+// CHECK-NEXT: ],
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 737,
+// CHECK-NEXT: "line": 71,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 730,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 737,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "Derived2",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 778,
+// CHECK-NEXT: "line": 74,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 771,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 806,
+// CHECK-NEXT: "line": 75,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Derived3",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "nonTrivial": true,
+// CHECK-NEXT: "simple": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "nonTrivial": true,
+// CHECK-NEXT: "simple": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "nonTrivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "nonTrivial": true,
+// CHECK-NEXT: "simple": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "nonTrivial": true,
+// CHECK-NEXT: "simple": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "bases": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "access": "public",
+// CHECK-NEXT: "isVirtual": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Base1"
+// CHECK-NEXT: },
+// CHECK-NEXT: "writtenAccess": "none"
+// CHECK-NEXT: }
+// CHECK-NEXT: ],
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 778,
+// CHECK-NEXT: "line": 74,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 771,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 778,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "Derived3",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 778,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 778,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 778,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "operator=",
+// CHECK-NEXT: "mangledName": "_ZN8Derived3aSERKS_",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Derived3 &(const Derived3 &)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "explicitlyDefaulted": "default",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 778,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 778,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 778,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const Derived3 &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "LValueReferenceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const Derived3 &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "qualTypeDetail": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const Derived3"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "const",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ElaboratedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Derived3"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Derived3"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "Derived3"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 778,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 778,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 778,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "operator=",
+// CHECK-NEXT: "mangledName": "_ZN8Derived3aSEOS_",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Derived3 &(Derived3 &&)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "explicitlyDefaulted": "default",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 778,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 778,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 778,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Derived3 &&"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RValueReferenceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Derived3 &&"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "Derived3"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXDestructorDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 778,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 778,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 778,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "~Derived3",
+// CHECK-NEXT: "mangledName": "_ZN8Derived3D1Ev",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "explicitlyDefaulted": "default"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 819,
+// CHECK-NEXT: "line": 77,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 812,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 871,
+// CHECK-NEXT: "line": 78,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Derived4",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "nonTrivial": true,
+// CHECK-NEXT: "simple": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "nonTrivial": true,
+// CHECK-NEXT: "simple": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "nonTrivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "nonTrivial": true,
+// CHECK-NEXT: "simple": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "nonTrivial": true,
+// CHECK-NEXT: "simple": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "bases": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "access": "public",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Base1"
+// CHECK-NEXT: },
+// CHECK-NEXT: "writtenAccess": "none"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "access": "public",
+// CHECK-NEXT: "isVirtual": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Base2"
+// CHECK-NEXT: },
+// CHECK-NEXT: "writtenAccess": "none"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "access": "protected",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Base3"
+// CHECK-NEXT: },
+// CHECK-NEXT: "writtenAccess": "protected"
+// CHECK-NEXT: }
+// CHECK-NEXT: ],
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 819,
+// CHECK-NEXT: "line": 77,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 812,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 819,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "Derived4",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 819,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 819,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 819,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "operator=",
+// CHECK-NEXT: "mangledName": "_ZN8Derived4aSERKS_",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Derived4 &(const Derived4 &)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "explicitlyDefaulted": "default",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 819,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 819,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 819,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const Derived4 &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "LValueReferenceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const Derived4 &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "qualTypeDetail": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const Derived4"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "const",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ElaboratedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Derived4"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Derived4"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "Derived4"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 819,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 819,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 819,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "operator=",
+// CHECK-NEXT: "mangledName": "_ZN8Derived4aSEOS_",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Derived4 &(Derived4 &&)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "explicitlyDefaulted": "default",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 819,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 819,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 819,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Derived4 &&"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RValueReferenceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Derived4 &&"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "Derived4"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXDestructorDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 819,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 819,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 819,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "~Derived4",
+// CHECK-NEXT: "mangledName": "_ZN8Derived4D1Ev",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "explicitlyDefaulted": "default"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 884,
+// CHECK-NEXT: "line": 80,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 877,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 922,
+// CHECK-NEXT: "line": 81,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Derived5",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "nonTrivial": true,
+// CHECK-NEXT: "simple": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "nonTrivial": true,
+// CHECK-NEXT: "simple": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "nonTrivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "nonTrivial": true,
+// CHECK-NEXT: "simple": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "nonTrivial": true,
+// CHECK-NEXT: "simple": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "bases": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "access": "protected",
+// CHECK-NEXT: "isVirtual": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Base1"
+// CHECK-NEXT: },
+// CHECK-NEXT: "writtenAccess": "protected"
+// CHECK-NEXT: }
+// CHECK-NEXT: ],
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 884,
+// CHECK-NEXT: "line": 80,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 877,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 884,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "Derived5",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 884,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 884,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 884,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "operator=",
+// CHECK-NEXT: "mangledName": "_ZN8Derived5aSERKS_",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Derived5 &(const Derived5 &)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "explicitlyDefaulted": "default",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 884,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 884,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 884,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const Derived5 &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "LValueReferenceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const Derived5 &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "qualTypeDetail": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const Derived5"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "const",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ElaboratedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Derived5"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Derived5"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "Derived5"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 884,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 884,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 884,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "operator=",
+// CHECK-NEXT: "mangledName": "_ZN8Derived5aSEOS_",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Derived5 &(Derived5 &&)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "explicitlyDefaulted": "default",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 884,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 884,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 884,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Derived5 &&"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RValueReferenceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Derived5 &&"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "Derived5"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXDestructorDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 884,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 884,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 884,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "~Derived5",
+// CHECK-NEXT: "mangledName": "_ZN8Derived5D1Ev",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "explicitlyDefaulted": "default"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 965,
+// CHECK-NEXT: "line": 84,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 958,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1003,
+// CHECK-NEXT: "line": 85,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Derived6",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true,
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "isConstexpr": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "bases": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "access": "public",
+// CHECK-NEXT: "isPackExpansion": true,
+// CHECK-NEXT: "isVirtual": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Bases"
+// CHECK-NEXT: },
+// CHECK-NEXT: "writtenAccess": "public"
+// CHECK-NEXT: }
+// CHECK-NEXT: ],
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 965,
+// CHECK-NEXT: "line": 84,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 958,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 965,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "Derived6",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
diff --git a/clang/test/AST/ast-dump-records.cpp b/clang/test/AST/ast-dump-records.cpp
index bfd8892698d4b..336b16c77b077 100644
--- a/clang/test/AST/ast-dump-records.cpp
+++ b/clang/test/AST/ast-dump-records.cpp
@@ -312,5 +312,5 @@ struct CheckNoCleanup {
static constexpr char kConstant = '+';
// CHECK: `-VarDecl {{.*}} kConstant 'const char' static inline constexpr cinit
// CHECK-NEXT: |-value: Int 43
-// CHECK-NEXT: `-CharacterLiteral {{.*}} 'char' 43
+// CHECK-NEXT: |-CharacterLiteral {{.*}} 'char' 43
};
diff --git a/clang/test/AST/ast-dump-recovery.c b/clang/test/AST/ast-dump-recovery.c
index 68d3f182dd9f6..1d92187555cce 100644
--- a/clang/test/AST/ast-dump-recovery.c
+++ b/clang/test/AST/ast-dump-recovery.c
@@ -1,150 +1,247 @@
-// RUN: not %clang_cc1 -triple x86_64-unknown-unknown -frecovery-ast -fno-recovery-ast-type -ast-dump %s | FileCheck -strict-whitespace %s
-
-int some_func(int);
-
-// CHECK: VarDecl {{.*}} unmatch_arg_call 'int' cinit
-// CHECK-NEXT: `-RecoveryExpr {{.*}} contains-errors
-// CHECK-NEXT: `-DeclRefExpr {{.*}} 'some_func'
-int unmatch_arg_call = some_func();
-
-const int a = 1;
-
-// CHECK: VarDecl {{.*}} postfix_inc
-// CHECK-NEXT: `-RecoveryExpr {{.*}} contains-errors
-// CHECK-NEXT: `-DeclRefExpr {{.*}} 'a'
-int postfix_inc = a++;
-
-// CHECK: VarDecl {{.*}} unary_address
-// CHECK-NEXT:`-RecoveryExpr {{.*}} contains-errors
-// CHECK-NEXT: `-ParenExpr {{.*}}
-// CHECK-NEXT: `-BinaryOperator {{.*}} '+'
-// CHECK-NEXT: |-ImplicitCastExpr
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} 'a'
-// CHECK-NEXT: `-IntegerLiteral {{.*}} 'int'
-int unary_address = &(a + 1);
-
-// CHECK: VarDecl {{.*}} ternary 'int' cinit
-// CHECK-NEXT: `-ConditionalOperator {{.*}}
-// CHECK-NEXT: |-DeclRefExpr {{.*}} 'a'
-// CHECK-NEXT: |-RecoveryExpr {{.*}}
-// CHECK-NEXT: `-DeclRefExpr {{.*}} 'a'
-int ternary = a ? undef : a;
-
-void test1() {
- // CHECK: `-RecoveryExpr {{.*}} contains-errors
- // CHECK-NEXT: `-DeclRefExpr {{.*}} 'a' 'const int'
- static int foo = a++; // verify no crash on local static var decl.
-}
-
-void test2() {
- int* ptr;
- // CHECK: BinaryOperator {{.*}} 'int *' contains-errors '='
- // CHECK-NEXT: |-DeclRefExpr {{.*}} 'ptr' 'int *'
- // CHECK-NEXT: `-RecoveryExpr {{.*}}
- // CHECK-NEXT: `-DeclRefExpr {{.*}} 'some_func'
- ptr = some_func(); // should not crash
-
- int compoundOp;
- // CHECK: CompoundAssignOperator {{.*}} 'int' contains-errors '+='
- // CHECK-NEXT: |-DeclRefExpr {{.*}} 'compoundOp'
- // CHECK-NEXT: `-RecoveryExpr {{.*}} contains-errors
- // CHECK-NEXT: `-DeclRefExpr {{.*}} 'some_func'
- compoundOp += some_func();
-
- // CHECK: BinaryOperator {{.*}} 'int' contains-errors '||'
- // CHECK-NEXT: |-RecoveryExpr {{.*}}
- // CHECK-NEXT: | `-DeclRefExpr {{.*}} 'some_func'
- // CHECK-NEXT: `-IntegerLiteral {{.*}} 'int' 1
- some_func() || 1;
-
- // CHECK: BinaryOperator {{.*}} '<dependent type>' contains-errors ','
- // CHECK-NEXT: |-IntegerLiteral {{.*}} 'int' 1
- // CHECK-NEXT: `-RecoveryExpr {{.*}}
- // CHECK-NEXT: `-DeclRefExpr {{.*}} 'some_func'
- 1, some_func();
- // CHECK: BinaryOperator {{.*}} 'int' contains-errors ','
- // CHECK-NEXT: |-RecoveryExpr {{.*}} '<dependent type>'
- // CHECK-NEXT: | `-DeclRefExpr {{.*}} 'some_func'
- // CHECK-NEXT: `-IntegerLiteral {{.*}} 'int' 1
- some_func(), 1;
-
- // conditional operator (comparison is invalid)
- float f;
- // CHECK: ConditionalOperator {{.*}} '<dependent type>' contains-errors
- // CHECK-NEXT: |-RecoveryExpr {{.*}} '<dependent type>'
- // CHECK-NEXT: | |-DeclRefExpr {{.*}} 'int *' lvalue
- // CHECK-NEXT: | `-DeclRefExpr {{.*}} 'float' lvalue
- // CHECK-NEXT: |-DeclRefExpr {{.*}} 'int *' lvalue
- // CHECK-NEXT: `-DeclRefExpr {{.*}} 'float' lvalue
- (ptr > f ? ptr : f);
-
- // CHECK: CStyleCastExpr {{.*}} 'float' contains-errors <Dependent>
- // CHECK-NEXT: `-RecoveryExpr {{.*}} '<dependent type>'
- // CHECK-NEXT: `-DeclRefExpr {{.*}} 'some_func'
- (float)some_func();
-}
-
-void test3() {
- // CHECK: CallExpr {{.*}} '<dependent type>' contains-errors
- // CHECK-NEXT: |-ParenExpr {{.*}} contains-errors lvalue
- // CHECK-NEXT: | `-RecoveryExpr {{.*}} contains-errors
- // CHECK-NEXT: | `-DeclRefExpr {{.*}} '__builtin_classify_type'
- // CHECK-NEXT: `-IntegerLiteral {{.*}} 'int' 1
- (*__builtin_classify_type)(1);
-
- extern void ext();
- // CHECK: CallExpr {{.*}} '<dependent type>' contains-errors
- // CHECK-NEXT: |-DeclRefExpr {{.*}} 'ext'
- // CHECK-NEXT: `-RecoveryExpr {{.*}} '<dependent type>'
- ext(undef_var);
-}
-
-// Verify no crash.
-void test4() {
- enum GH62446 {
- // CHECK: RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
- // CHECK-NEXT: |-StringLiteral {{.*}} "a"
- // CHECK-NEXT: `-IntegerLiteral {{.*}} 2
- invalid_enum_value = "a" * 2,
- b,
- };
-}
-
-// Verify no crash
-void test5_GH62711() {
- // CHECK: VAArgExpr {{.*}} 'int' contains-errors
- // CHECK-NEXT: | `-ImplicitCastExpr {{.*}} '<dependent type>' contains-errors
- // CHECK-NEXT: | `-RecoveryExpr {{.*}} '<dependent type>' contains-errors
- if (__builtin_va_arg(undef, int) << 1);
-}
-
-void test6_GH50244() {
- double array[16];
- // CHECK: UnaryExprOrTypeTraitExpr {{.*}} 'unsigned long' contains-errors sizeof
- // CHECK-NEXT: `-CallExpr {{.*}} '<dependent type>' contains-errors
- // CHECK-NEXT: |-DeclRefExpr {{.*}} 'int ()'
- // CHECK-NEXT: `-RecoveryExpr {{.*}} '<dependent type>'
- sizeof array / sizeof foo(undef);
-}
-
-// No crash on DeclRefExpr that refers to ValueDecl with invalid initializers.
-void test7() {
- int b[] = {""()};
-
- // CHECK: CStyleCastExpr {{.*}} 'unsigned int' contains-errors
- // CHECK-NEXT: | `-DeclRefExpr {{.*}} 'int[]' contains-errors
- (unsigned) b; // GH50236
-
- // CHECK: BinaryOperator {{.*}} '<dependent type>' contains-errors '+'
- // CHECK-NEXT: |-DeclRefExpr {{.*}} 'int[]' contains-errors
- // CHECK-NEXT: `-IntegerLiteral {{.*}}
- b + 1; // GH50243
-
- // CHECK: CallExpr {{.*}} '<dependent type>' contains-errors
- // CHECK-NEXT: |-DeclRefExpr {{.*}} 'int ()' Function
- // CHECK-NEXT: `-DeclRefExpr {{.*}} 'int[]' contains-errors
- return c(b); // GH48636
-}
-int test8_GH50320_b[] = {""()};
-// CHECK: ArraySubscriptExpr {{.*}} 'int' contains-errors lvalue
-int test8 = test_8GH50320_b[0];
+// RUN: not %clang_cc1 -triple x86_64-unknown-unknown -frecovery-ast -fno-recovery-ast-type -ast-dump %s | FileCheck -strict-whitespace %s
+
+int some_func(int);
+
+int unmatch_arg_call = some_func();
+
+const int a = 1;
+
+int postfix_inc = a++;
+
+int unary_address = &(a + 1);
+
+int ternary = a ? undef : a;
+
+void test1() {
+ static int foo = a++; // verify no crash on local static var decl.
+}
+
+void test2() {
+ int* ptr;
+ ptr = some_func(); // should not crash
+
+ int compoundOp;
+ compoundOp += some_func();
+
+ some_func() || 1;
+
+ 1, some_func();
+ some_func(), 1;
+
+ // conditional operator (comparison is invalid)
+ float f;
+ (ptr > f ? ptr : f);
+ (float)some_func();
+}
+
+void test3() {
+ (*__builtin_classify_type)(1);
+
+ extern void ext();
+ ext(undef_var);
+}
+
+// Verify no crash.
+void test4() {
+ enum GH62446 {
+ invalid_enum_value = "a" * 2,
+ b,
+ };
+}
+
+// Verify no crash
+void test5_GH62711() {
+ if (__builtin_va_arg(undef, int) << 1);
+}
+
+void test6_GH50244() {
+ double array[16];
+ sizeof array / sizeof foo(undef);
+}
+
+// No crash on DeclRefExpr that refers to ValueDecl with invalid initializers.
+void test7() {
+ int b[] = {""()};
+ (unsigned) b; // GH50236
+
+ b + 1; // GH50243
+ return c(b); // GH48636
+}
+int test8_GH50320_b[] = {""()};
+int test8 = test_8GH50320_b[0];
+
+// CHECK: TranslationUnitDecl 0x{{.+}} <<invalid sloc>> <invalid sloc>
+// CHECK-NEXT: |-TypedefDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit __int128_t '__int128'
+// CHECK-NEXT: | `-typeDetails: BuiltinType 0x{{.+}} '__int128'
+// CHECK-NEXT: |-TypedefDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit __uint128_t 'unsigned __int128'
+// CHECK-NEXT: | `-typeDetails: BuiltinType 0x{{.+}} 'unsigned __int128'
+// CHECK-NEXT: |-TypedefDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit __NSConstantString 'struct __NSConstantString_tag'
+// CHECK-NEXT: | `-typeDetails: RecordType 0x{{.+}} 'struct __NSConstantString_tag'
+// CHECK-NEXT: | `-Record 0x{{.+}} '__NSConstantString_tag'
+// CHECK-NEXT: |-TypedefDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit __builtin_ms_va_list 'char *'
+// CHECK-NEXT: | `-typeDetails: PointerType 0x{{.+}} 'char *'
+// CHECK-NEXT: | `-typeDetails: BuiltinType 0x{{.+}} 'char'
+// CHECK-NEXT: |-TypedefDecl 0x{{.+}} <<invalid sloc>> <invalid sloc> implicit __builtin_va_list 'struct __va_list_tag[1]'
+// CHECK-NEXT: | `-typeDetails: ConstantArrayType 0x{{.+}} 'struct __va_list_tag[1]' 1
+// CHECK-NEXT: | `-typeDetails: RecordType 0x{{.+}} 'struct __va_list_tag'
+// CHECK-NEXT: | `-Record 0x{{.+}} '__va_list_tag'
+// CHECK-NEXT: |-FunctionDecl 0x{{.+}} <{{.*}} col:{{.*}}> col:{{.*}} used some_func 'int (int)'
+// CHECK-NEXT: | `-ParmVarDecl 0x{{.+}} <col:{{.*}}> col:{{.*}} 'int'
+// CHECK-NEXT: | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK-NEXT: |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} unmatch_arg_call 'int' cinit
+// CHECK-NEXT: | |-RecoveryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> '<dependent type>' contains-errors lvalue
+// CHECK-NEXT: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int (int)' Function 0x{{.+}} 'some_func' 'int (int)'
+// CHECK-NEXT: | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK-NEXT: |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used a 'const int' cinit
+// CHECK-NEXT: | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK-NEXT: | `-qualTypeDetail: QualType 0x{{.+}} 'const int' const
+// CHECK-NEXT: | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK-NEXT: |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} postfix_inc 'int' cinit
+// CHECK-NEXT: | |-RecoveryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> '<dependent type>' contains-errors lvalue
+// CHECK-NEXT: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const int' lvalue Var 0x{{.+}} 'a' 'const int'
+// CHECK-NEXT: | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK-NEXT: |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} unary_address 'int' cinit
+// CHECK-NEXT: | |-RecoveryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> '<dependent type>' contains-errors lvalue
+// CHECK-NEXT: | | `-ParenExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int'
+// CHECK-NEXT: | | `-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' '+'
+// CHECK-NEXT: | | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int' <LValueToRValue>
+// CHECK-NEXT: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const int' lvalue Var 0x{{.+}} 'a' 'const int'
+// CHECK-NEXT: | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK-NEXT: | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK-NEXT: |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} ternary 'int' cinit
+// CHECK-NEXT: | |-ConditionalOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> '<dependent type>' contains-errors
+// CHECK-NEXT: | | |-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const int' lvalue Var 0x{{.+}} 'a' 'const int'
+// CHECK-NEXT: | | |-RecoveryExpr 0x{{.+}} <col:{{.*}}> '<dependent type>' contains-errors lvalue
+// CHECK-NEXT: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const int' lvalue Var 0x{{.+}} 'a' 'const int'
+// CHECK-NEXT: | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK-NEXT: |-FunctionDecl 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}> line:{{.*}}:{{.*}} test1 'void ()'
+// CHECK-NEXT: | `-CompoundStmt 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK-NEXT: | `-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK-NEXT: | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} foo 'int' static cinit
+// CHECK-NEXT: | |-RecoveryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> '<dependent type>' contains-errors lvalue
+// CHECK-NEXT: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'const int' lvalue Var 0x{{.+}} 'a' 'const int'
+// CHECK-NEXT: | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK-NEXT: |-FunctionDecl 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}> line:{{.*}}:{{.*}} test2 'void ()'
+// CHECK-NEXT: | `-CompoundStmt 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK-NEXT: | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK-NEXT: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used ptr 'int *'
+// CHECK-NEXT: | | `-typeDetails: PointerType 0x{{.+}} 'int *'
+// CHECK-NEXT: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK-NEXT: | |-BinaryOperator 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'int *' contains-errors '='
+// CHECK-NEXT: | | |-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} 'ptr' 'int *'
+// CHECK-NEXT: | | `-RecoveryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> '<dependent type>' contains-errors lvalue
+// CHECK-NEXT: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int (int)' Function 0x{{.+}} 'some_func' 'int (int)'
+// CHECK-NEXT: | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK-NEXT: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used compoundOp 'int'
+// CHECK-NEXT: | | `-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK-NEXT: | |-CompoundAssignOperator 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'int' contains-errors '+=' ComputeLHSTy='NULL TYPE' ComputeResultTy='NULL TYPE'
+// CHECK-NEXT: | | |-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int' lvalue Var 0x{{.+}} 'compoundOp' 'int'
+// CHECK-NEXT: | | `-RecoveryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> '<dependent type>' contains-errors lvalue
+// CHECK-NEXT: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int (int)' Function 0x{{.+}} 'some_func' 'int (int)'
+// CHECK-NEXT: | |-BinaryOperator 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'int' contains-errors '||'
+// CHECK-NEXT: | | |-RecoveryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> '<dependent type>' contains-errors lvalue
+// CHECK-NEXT: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int (int)' Function 0x{{.+}} 'some_func' 'int (int)'
+// CHECK-NEXT: | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK-NEXT: | |-BinaryOperator 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> '<dependent type>' contains-errors ','
+// CHECK-NEXT: | | |-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK-NEXT: | | `-RecoveryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> '<dependent type>' contains-errors lvalue
+// CHECK-NEXT: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int (int)' Function 0x{{.+}} 'some_func' 'int (int)'
+// CHECK-NEXT: | |-BinaryOperator 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'int' contains-errors ','
+// CHECK-NEXT: | | |-RecoveryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> '<dependent type>' contains-errors lvalue
+// CHECK-NEXT: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int (int)' Function 0x{{.+}} 'some_func' 'int (int)'
+// CHECK-NEXT: | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK-NEXT: | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK-NEXT: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used f 'float'
+// CHECK-NEXT: | | `-typeDetails: BuiltinType 0x{{.+}} 'float'
+// CHECK-NEXT: | |-ParenExpr 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> '<dependent type>' contains-errors
+// CHECK-NEXT: | | `-ConditionalOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> '<dependent type>' contains-errors
+// CHECK-NEXT: | | |-RecoveryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> '<dependent type>' contains-errors lvalue
+// CHECK-NEXT: | | | |-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} 'ptr' 'int *'
+// CHECK-NEXT: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'float' lvalue Var 0x{{.+}} 'f' 'float'
+// CHECK-NEXT: | | |-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int *' lvalue Var 0x{{.+}} 'ptr' 'int *'
+// CHECK-NEXT: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'float' lvalue Var 0x{{.+}} 'f' 'float'
+// CHECK-NEXT: | `-CStyleCastExpr 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'float' contains-errors <Dependent>
+// CHECK-NEXT: | `-RecoveryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> '<dependent type>' contains-errors lvalue
+// CHECK-NEXT: | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int (int)' Function 0x{{.+}} 'some_func' 'int (int)'
+// CHECK-NEXT: |-FunctionDecl 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}> line:{{.*}}:{{.*}} test3 'void ()'
+// CHECK-NEXT: | `-CompoundStmt 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK-NEXT: | |-CallExpr 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> '<dependent type>' contains-errors
+// CHECK-NEXT: | | |-ParenExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> '<dependent type>' contains-errors lvalue
+// CHECK-NEXT: | | | `-RecoveryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> '<dependent type>' contains-errors lvalue
+// CHECK-NEXT: | | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> '<builtin fn type>' Function 0x{{.+}} '__builtin_classify_type' 'int ()'
+// CHECK-NEXT: | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK-NEXT: | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK-NEXT: | | `-FunctionDecl 0x{{.+}} parent 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used ext 'void ()' extern
+// CHECK-NEXT: | `-CallExpr 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> '<dependent type>' contains-errors
+// CHECK-NEXT: | |-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'void ()' Function 0x{{.+}} 'ext' 'void ()'
+// CHECK-NEXT: | `-RecoveryExpr 0x{{.+}} <col:{{.*}}> '<dependent type>' contains-errors lvalue
+// CHECK-NEXT: |-FunctionDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} implicit used __builtin_classify_type 'int ()' extern
+// CHECK-NEXT: | |-attrDetails: BuiltinAttr 0x{{.+}} <<invalid sloc>> Implicit 209
+// CHECK-NEXT: | |-attrDetails: NoThrowAttr 0x{{.+}} <col:{{.*}}> Implicit
+// CHECK-NEXT: | `-attrDetails: ConstAttr 0x{{.+}} <col:{{.*}}> Implicit
+// CHECK-NEXT: |-FunctionDecl 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}> line:{{.*}}:{{.*}} test4 'void ()'
+// CHECK-NEXT: | `-CompoundStmt 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK-NEXT: | `-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK-NEXT: | `-EnumDecl 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}> line:{{.*}}:{{.*}} GH62446
+// CHECK-NEXT: | |-EnumConstantDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} invalid_enum_value 'int'
+// CHECK-NEXT: | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' contains-errors <IntegralCast>
+// CHECK-NEXT: | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> '<dependent type>' contains-errors <LValueToRValue>
+// CHECK-NEXT: | | `-RecoveryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> '<dependent type>' contains-errors lvalue
+// CHECK-NEXT: | | |-StringLiteral 0x{{.+}} <col:{{.*}}> 'char[2]' lvalue "a"
+// CHECK-NEXT: | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 2
+// CHECK-NEXT: | `-EnumConstantDecl 0x{{.+}} <line:{{.*}}:{{.*}}> col:{{.*}} b 'int'
+// CHECK-NEXT: |-FunctionDecl 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}> line:{{.*}}:{{.*}} test5_GH62711 'void ()'
+// CHECK-NEXT: | `-CompoundStmt 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK-NEXT: | `-IfStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK-NEXT: | |-BinaryOperator 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' contains-errors '<<'
+// CHECK-NEXT: | | |-VAArgExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' contains-errors
+// CHECK-NEXT: | | | `-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> '<dependent type>' contains-errors <LValueToRValue>
+// CHECK-NEXT: | | | `-RecoveryExpr 0x{{.+}} <col:{{.*}}> '<dependent type>' contains-errors lvalue
+// CHECK-NEXT: | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK-NEXT: | `-NullStmt 0x{{.+}} <col:{{.*}}>
+// CHECK-NEXT: |-FunctionDecl 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}> line:{{.*}}:{{.*}} test6_GH50244 'void ()'
+// CHECK-NEXT: | `-CompoundStmt 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK-NEXT: | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK-NEXT: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} referenced array 'double[16]'
+// CHECK-NEXT: | | `-typeDetails: ConstantArrayType 0x{{.+}} 'double[16]' 16
+// CHECK-NEXT: | | `-typeDetails: BuiltinType 0x{{.+}} 'double'
+// CHECK-NEXT: | `-BinaryOperator 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'unsigned long' contains-errors '/'
+// CHECK-NEXT: | |-UnaryExprOrTypeTraitExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'unsigned long' sizeof
+// CHECK-NEXT: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'double[16]' lvalue Var 0x{{.+}} 'array' 'double[16]' non_odr_use_unevaluated
+// CHECK-NEXT: | `-UnaryExprOrTypeTraitExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'unsigned long' contains-errors sizeof
+// CHECK-NEXT: | `-CallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> '<dependent type>' contains-errors
+// CHECK-NEXT: | |-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int ()' Function 0x{{.+}} 'foo' 'int ()' non_odr_use_unevaluated
+// CHECK-NEXT: | `-RecoveryExpr 0x{{.+}} <col:{{.*}}> '<dependent type>' contains-errors lvalue
+// CHECK-NEXT: |-FunctionDecl 0x{{.+}} <line:{{.*}}:{{.*}}, line:{{.*}}:{{.*}}> line:{{.*}}:{{.*}} test7 'void ()'
+// CHECK-NEXT: | `-CompoundStmt 0x{{.+}} <col:{{.*}}, line:{{.*}}:{{.*}}>
+// CHECK-NEXT: | |-DeclStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK-NEXT: | | `-VarDecl 0x{{.+}} <col:{{.*}}, col:{{.*}}> col:{{.*}} used b 'int[]' cinit
+// CHECK-NEXT: | | |-InitListExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'void' contains-errors
+// CHECK-NEXT: | | | `-RecoveryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> '<dependent type>' contains-errors lvalue
+// CHECK-NEXT: | | | `-StringLiteral 0x{{.+}} <col:{{.*}}> 'char[1]' lvalue ""
+// CHECK-NEXT: | | `-typeDetails: DependentSizedArrayType 0x{{.+}} 'int[]' dependent <col:{{.*}}, col:{{.*}}>
+// CHECK-NEXT: | | |-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK-NEXT: | | `-<<<NULL>>>
+// CHECK-NEXT: | |-CStyleCastExpr 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> 'unsigned int' contains-errors <Dependent>
+// CHECK-NEXT: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int[]' contains-errors lvalue Var 0x{{.+}} 'b' 'int[]'
+// CHECK-NEXT: | |-BinaryOperator 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> '<dependent type>' contains-errors '+'
+// CHECK-NEXT: | | |-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int[]' contains-errors lvalue Var 0x{{.+}} 'b' 'int[]'
+// CHECK-NEXT: | | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 1
+// CHECK-NEXT: | `-ReturnStmt 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK-NEXT: | `-CallExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> '<dependent type>' contains-errors
+// CHECK-NEXT: | |-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int ()' Function 0x{{.+}} 'c' 'int ()'
+// CHECK-NEXT: | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int[]' contains-errors lvalue Var 0x{{.+}} 'b' 'int[]'
+// CHECK-NEXT: |-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} used test8_GH50320_b 'int[]' cinit
+// CHECK-NEXT: | |-InitListExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'void' contains-errors
+// CHECK-NEXT: | | `-RecoveryExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> '<dependent type>' contains-errors lvalue
+// CHECK-NEXT: | | `-StringLiteral 0x{{.+}} <col:{{.*}}> 'char[1]' lvalue ""
+// CHECK-NEXT: | `-typeDetails: DependentSizedArrayType 0x{{.+}} 'int[]' dependent <line:{{.*}}:{{.*}}, col:{{.*}}>
+// CHECK-NEXT: | |-typeDetails: BuiltinType 0x{{.+}} 'int'
+// CHECK-NEXT: | `-<<<NULL>>>
+// CHECK-NEXT: `-VarDecl 0x{{.+}} <line:{{.*}}:{{.*}}, col:{{.*}}> col:{{.*}} test8 'int' cinit
+// CHECK-NEXT: |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' contains-errors <LValueToRValue>
+// CHECK-NEXT: | `-ArraySubscriptExpr 0x{{.+}} <col:{{.*}}, col:{{.*}}> 'int' contains-errors lvalue
+// CHECK-NEXT: | |-ImplicitCastExpr 0x{{.+}} <col:{{.*}}> 'int *' contains-errors <ArrayToPointerDecay>
+// CHECK-NEXT: | | `-DeclRefExpr 0x{{.+}} <col:{{.*}}> 'int[]' contains-errors lvalue Var 0x{{.+}} 'test8_GH50320_b' 'int[]'
+// CHECK-NEXT: | `-IntegerLiteral 0x{{.+}} <col:{{.*}}> 'int' 0
+// CHECK-NEXT: `-typeDetails: BuiltinType 0x{{.+}} 'int'
\ No newline at end of file
diff --git a/clang/test/AST/ast-dump-recovery.cpp b/clang/test/AST/ast-dump-recovery.cpp
index a88dff471d9f0..73d28e3595d72 100644
--- a/clang/test/AST/ast-dump-recovery.cpp
+++ b/clang/test/AST/ast-dump-recovery.cpp
@@ -1,462 +1,887 @@
-// RUN: not %clang_cc1 -triple x86_64-unknown-unknown -Wno-unused-value -fcxx-exceptions -std=gnu++17 -frecovery-ast -frecovery-ast-type -ast-dump %s | FileCheck -strict-whitespace %s
-// RUN: not %clang_cc1 -triple x86_64-unknown-unknown -Wno-unused-value -fcxx-exceptions -std=gnu++17 -fno-recovery-ast -ast-dump %s | FileCheck --check-prefix=DISABLED -strict-whitespace %s
+// RUN: not %clang_cc1 -triple x86_64-unknown-unknown -Wno-unused-value -fcxx-exceptions -std=gnu++17 -frecovery-ast -frecovery-ast-type -ast-dump %s | FileCheck %s
int some_func(int *);
-// CHECK: VarDecl {{.*}} invalid_call
-// CHECK-NEXT: `-RecoveryExpr {{.*}} 'int' contains-errors
-// CHECK-NEXT: |-UnresolvedLookupExpr {{.*}} 'some_func'
-// CHECK-NEXT: `-IntegerLiteral {{.*}} 123
-// DISABLED-NOT: -RecoveryExpr {{.*}} contains-errors
+// CHECK: |-FunctionDecl {{.*}} some_func 'int (int *)'
+// CHECK: | `-ParmVarDecl {{.*}} 'int *'
+// CHECK: | `-typeDetails: PointerType {{.*}} 'int *'
+// CHECK: | `-typeDetails: BuiltinType {{.*}} 'int'
+
int invalid_call = some_func(123);
+
+// CHECK: |-VarDecl {{.*}} invalid_call 'int' cinit
+// CHECK: | |-RecoveryExpr {{.*}} 'int' contains-errors
+// CHECK: | | |-UnresolvedLookupExpr {{.*}} '<overloaded function type>' lvalue (ADL) = 'some_func' {{.*}}
+// CHECK: | | `-IntegerLiteral {{.*}} 'int' 123
+// CHECK: | `-typeDetails: BuiltinType {{.*}} 'int'
+
void test_invalid_call(int s) {
- // CHECK: CallExpr {{.*}} '<dependent type>' contains-errors
- // CHECK-NEXT: |-UnresolvedLookupExpr {{.*}} 'some_func'
- // CHECK-NEXT: |-RecoveryExpr {{.*}} <col:13>
- // CHECK-NEXT: `-BinaryOperator {{.*}}
- // CHECK-NEXT: |-RecoveryExpr {{.*}}
- // CHECK-NEXT: `-IntegerLiteral {{.*}} <col:28> 'int' 1
- some_func(undef1, undef2+1);
-
- // CHECK: BinaryOperator {{.*}} '<dependent type>' contains-errors '='
- // CHECK-NEXT: |-DeclRefExpr {{.*}} 's'
- // CHECK-NEXT: `-CallExpr {{.*}} '<dependent type>' contains-errors
- // CHECK-NEXT: |-UnresolvedLookupExpr {{.*}} 'some_func'
- // CHECK-NEXT: `-RecoveryExpr {{.*}} contains-errors
- s = some_func(undef1);
-
- // CHECK: VarDecl {{.*}} var 'int'
- // CHECK-NEXT: `-CallExpr {{.*}} '<dependent type>' contains-errors
- // CHECK-NEXT: |-UnresolvedLookupExpr {{.*}} 'some_func'
- // CHECK-NEXT: `-RecoveryExpr {{.*}} contains-errors
- int var = some_func(undef1);
+ some_func(undef1, undef2+1);
+ s = some_func(undef1);
+ int var = some_func(undef1);
}
+// CHECK: |-FunctionDecl {{.*}} used test_invalid_call 'void (int)'
+// CHECK: | |-ParmVarDecl {{.*}} used s 'int'
+// CHECK: | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK: | `-CompoundStmt {{.*}}
+// CHECK: | |-CallExpr {{.*}} '<dependent type>' contains-errors
+// CHECK: | | |-UnresolvedLookupExpr {{.*}} '<overloaded function type>' lvalue (ADL) = 'some_func' {{.*}}
+// CHECK: | | |-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | `-BinaryOperator {{.*}} '<dependent type>' contains-errors '+'
+// CHECK: | | |-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK: | |-BinaryOperator {{.*}} '<dependent type>' contains-errors '='
+// CHECK: | | |-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 's' 'int'
+// CHECK: | | `-CallExpr {{.*}} '<dependent type>' contains-errors
+// CHECK: | | |-UnresolvedLookupExpr {{.*}} '<overloaded function type>' lvalue (ADL) = 'some_func' {{.*}}
+// CHECK: | | `-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | `-DeclStmt {{.*}}
+// CHECK: | `-VarDecl {{.*}} var 'int' cinit
+// CHECK: | |-CallExpr {{.*}} '<dependent type>' contains-errors
+// CHECK: | | |-UnresolvedLookupExpr {{.*}} '<overloaded function type>' lvalue (ADL) = 'some_func' {{.*}}
+// CHECK: | | `-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | `-typeDetails: BuiltinType {{.*}} 'int'
+
int ambig_func(double);
+
+// CHECK: |-FunctionDecl {{.*}}
+// CHECK: | `-ParmVarDecl {{.*}}
+// CHECK: | `-typeDetails: BuiltinType {{.*}}
+
int ambig_func(float);
-// CHECK: VarDecl {{.*}} ambig_call
-// CHECK-NEXT: `-RecoveryExpr {{.*}} 'int' contains-errors
-// CHECK-NEXT: |-UnresolvedLookupExpr {{.*}} 'ambig_func'
-// CHECK-NEXT: `-IntegerLiteral {{.*}} 123
-// DISABLED-NOT: -RecoveryExpr {{.*}} contains-errors
+// CHECK: |-FunctionDecl {{.*}}
+// CHECK: | `-ParmVarDecl {{.*}}
+// CHECK: | `-typeDetails: BuiltinType {{.*}}
+
int ambig_call = ambig_func(123);
-// CHECK: VarDecl {{.*}} unresolved_call1
-// CHECK-NEXT:`-RecoveryExpr {{.*}} '<dependent type>' contains-errors
-// CHECK-NEXT: `-UnresolvedLookupExpr {{.*}} 'bar'
-// DISABLED-NOT: -RecoveryExpr {{.*}} contains-errors
+// CHECK: |-VarDecl {{.*}} ambig_call 'int' cinit
+// CHECK: | |-RecoveryExpr {{.*}} 'int' contains-errors
+// CHECK: | | |-UnresolvedLookupExpr {{.*}} '<overloaded function type>' lvalue (ADL) = 'ambig_func' {{.*}} {{.*}}
+// CHECK: | | `-IntegerLiteral {{.*}} 'int' 123
+// CHECK: | `-typeDetails: BuiltinType {{.*}} 'int'
+
int unresolved_call1 = bar();
-// CHECK: VarDecl {{.*}} unresolved_call2
-// CHECK-NEXT:`-CallExpr {{.*}} contains-errors
-// CHECK-NEXT: |-UnresolvedLookupExpr {{.*}} 'bar'
-// CHECK-NEXT: |-RecoveryExpr {{.*}} contains-errors
-// CHECK-NEXT: | `-UnresolvedLookupExpr {{.*}} 'baz'
-// CHECK-NEXT: `-RecoveryExpr {{.*}} contains-errors
-// CHECK-NEXT: `-UnresolvedLookupExpr {{.*}} 'qux'
-// DISABLED-NOT: -RecoveryExpr {{.*}} contains-errors
+// CHECK: |-VarDecl {{.*}} unresolved_call1 'int' cinit
+// CHECK: | |-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | `-UnresolvedLookupExpr {{.*}} '<overloaded function type>' lvalue (ADL) = 'bar' empty
+// CHECK: | `-typeDetails: BuiltinType {{.*}} 'int'
+
int unresolved_call2 = bar(baz(), qux());
+// CHECK: |-VarDecl {{.*}} unresolved_call2 'int' cinit
+// CHECK: | |-CallExpr {{.*}} '<dependent type>' contains-errors
+// CHECK: | | |-UnresolvedLookupExpr {{.*}} '<overloaded function type>' lvalue (ADL) = 'bar' empty
+// CHECK: | | |-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | | `-UnresolvedLookupExpr {{.*}} '<overloaded function type>' lvalue (ADL) = 'baz' empty
+// CHECK: | | `-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | `-UnresolvedLookupExpr {{.*}} '<overloaded function type>' lvalue (ADL) = 'qux' empty
+// CHECK: | `-typeDetails: BuiltinType {{.*}} 'int'
+
constexpr int a = 10;
-// CHECK: VarDecl {{.*}} postfix_inc
-// CHECK-NEXT:`-RecoveryExpr {{.*}} contains-errors
-// CHECK-NEXT: `-DeclRefExpr {{.*}} 'a'
-// DISABLED-NOT: -RecoveryExpr {{.*}} contains-errors
+// CHECK: |-VarDecl {{.*}} used a 'const int' constexpr cinit
+// CHECK: | |-value: Int 10
+// CHECK: | |-IntegerLiteral {{.*}} 'int' 10
+// CHECK: | `-qualTypeDetail: QualType {{.*}} 'const int' const
+// CHECK: | `-typeDetails: BuiltinType {{.*}} 'int'
+
int postfix_inc = a++;
-// CHECK: VarDecl {{.*}} prefix_inc
-// CHECK-NEXT:`-RecoveryExpr {{.*}} contains-errors
-// CHECK-NEXT: `-DeclRefExpr {{.*}} 'a'
-// DISABLED-NOT: -RecoveryExpr {{.*}} contains-errors
+// CHECK: |-VarDecl {{.*}} postfix_inc 'int' cinit
+// CHECK: | |-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | `-DeclRefExpr {{.*}} 'const int' lvalue Var {{.*}} 'a' 'const int'
+// CHECK: | `-typeDetails: BuiltinType {{.*}} 'int'
+
int prefix_inc = ++a;
-// CHECK: VarDecl {{.*}} unary_address
-// CHECK-NEXT:`-RecoveryExpr {{.*}} contains-errors
-// CHECK-NEXT: `-ParenExpr {{.*}}
-// CHECK-NEXT: `-BinaryOperator {{.*}} '+'
-// CHECK-NEXT: |-ImplicitCastExpr
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} 'a'
-// DISABLED-NOT: -RecoveryExpr {{.*}} contains-errors
+// CHECK: |-VarDecl {{.*}} prefix_inc 'int' cinit
+// CHECK: | |-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | `-DeclRefExpr {{.*}} 'const int' lvalue Var {{.*}} 'a' 'const int'
+// CHECK: | `-typeDetails: BuiltinType {{.*}} 'int'
+
int unary_address = &(a + 1);
+// CHECK: |-VarDecl {{.*}} unary_address 'int' cinit
+// CHECK: | |-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | `-ParenExpr {{.*}} 'int'
+// CHECK: | | `-BinaryOperator {{.*}} 'int' '+'
+// CHECK: | | |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} 'const int' lvalue Var {{.*}} 'a' 'const int' non_odr_use_constant
+// CHECK: | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK: | `-typeDetails: BuiltinType {{.*}} 'int'
-// CHECK: VarDecl {{.*}} unary_bitinverse
-// CHECK-NEXT:`-RecoveryExpr {{.*}} contains-errors
-// CHECK-NEXT: `-ParenExpr {{.*}}
-// CHECK-NEXT: `-BinaryOperator {{.*}} '+'
-// CHECK-NEXT: |-ImplicitCastExpr
-// CHECK-NEXT: | `-ImplicitCastExpr
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} 'a'
-// DISABLED-NOT: -RecoveryExpr {{.*}} contains-errors
int unary_bitinverse = ~(a + 0.0);
+// CHECK: |-VarDecl {{.*}} unary_bitinverse 'int' cinit
+// CHECK: | |-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | `-ParenExpr {{.*}} 'double'
+// CHECK: | | `-BinaryOperator {{.*}} 'double' '+'
+// CHECK: | | |-ImplicitCastExpr {{.*}} 'double' <IntegralToFloating>
+// CHECK: | | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} 'const int' lvalue Var {{.*}} 'a' 'const int' non_odr_use_constant
+// CHECK: | | `-FloatingLiteral {{.*}} 'double' 0.000000e+00
+// CHECK: | `-typeDetails: BuiltinType {{.*}} 'int'
-// CHECK: VarDecl {{.*}} binary
-// CHECK-NEXT:`-RecoveryExpr {{.*}} contains-errors
-// CHECK-NEXT: |-DeclRefExpr {{.*}} 'a'
-// CHECK-NEXT: `-CXXNullPtrLiteralExpr
-// DISABLED-NOT: -RecoveryExpr {{.*}} contains-errors
int binary = a + nullptr;
+// CHECK: |-VarDecl {{.*}} binary 'int' cinit
+// CHECK: | |-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | |-DeclRefExpr {{.*}} 'const int' lvalue Var {{.*}} 'a' 'const int'
+// CHECK: | | `-CXXNullPtrLiteralExpr {{.*}} 'std::nullptr_t'
+// CHECK: | `-typeDetails: BuiltinType {{.*}} 'int'
-// CHECK: VarDecl {{.*}} ternary
-// CHECK-NEXT:`-RecoveryExpr {{.*}} contains-errors
-// CHECK-NEXT: |-DeclRefExpr {{.*}} 'a'
-// CHECK-NEXT: |-CXXNullPtrLiteralExpr
-// CHECK-NEXT: `-DeclRefExpr {{.*}} 'a'
-// DISABLED-NOT: -RecoveryExpr {{.*}} contains-errors
int ternary = a ? nullptr : a;
-// CHECK: FunctionDecl
-// CHECK-NEXT:|-ParmVarDecl {{.*}} x
-// CHECK-NEXT:`-CompoundStmt
-// CHECK-NEXT: |-RecoveryExpr {{.*}} contains-errors
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} 'foo'
-// CHECK-NEXT: `-CallExpr {{.*}} contains-errors
-// CHECK-NEXT: |-RecoveryExpr {{.*}} contains-errors
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} 'foo'
-// CHECK-NEXT: `-DeclRefExpr {{.*}} 'x'
+// CHECK: |-VarDecl {{.*}} ternary 'int' cinit
+// CHECK: | |-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | |-DeclRefExpr {{.*}} 'const int' lvalue Var {{.*}} 'a' 'const int'
+// CHECK: | | |-CXXNullPtrLiteralExpr {{.*}} 'std::nullptr_t'
+// CHECK: | | `-DeclRefExpr {{.*}} 'const int' lvalue Var {{.*}} 'a' 'const int'
+// CHECK: | `-typeDetails: BuiltinType {{.*}} 'int'
+
struct Foo {} foo;
+
+// CHECK: |-CXXRecordDecl {{.*}} struct Foo definition
+// CHECK: | |-DefinitionData pass_in_registers empty aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor can_const_default_init
+// CHECK: | | |-DefaultConstructor exists trivial constexpr defaulted_is_constexpr
+// CHECK: | | |-CopyConstructor simple trivial has_const_param implicit_has_const_param
+// CHECK: | | |-MoveConstructor exists simple trivial
+// CHECK: | | |-CopyAssignment simple trivial has_const_param implicit_has_const_param
+// CHECK: | | |-MoveAssignment exists simple trivial
+// CHECK: | | `-Destructor simple irrelevant trivial
+// CHECK: | |-CXXRecordDecl {{.*}} implicit struct Foo
+// CHECK: | |-CXXConstructorDecl {{.*}} implicit used constexpr Foo 'void () noexcept' inline default trivial
+// CHECK: | | `-CompoundStmt {{.*}}
+// CHECK: | |-CXXConstructorDecl {{.*}} implicit constexpr Foo 'void (const Foo &)' inline default trivial noexcept-unevaluated {{.*}}
+// CHECK: | | `-ParmVarDecl {{.*}} 'const Foo &'
+// CHECK: | | `-typeDetails: LValueReferenceType {{.*}} 'const Foo &'
+// CHECK: | | `-qualTypeDetail: QualType {{.*}} 'const Foo' const
+// CHECK: | | `-typeDetails: ElaboratedType {{.*}} 'Foo' sugar
+// CHECK: | | `-typeDetails: RecordType {{.*}} 'Foo'
+// CHECK: | | `-CXXRecord {{.*}} 'Foo'
+// CHECK: | |-CXXConstructorDecl {{.*}} implicit constexpr Foo 'void (Foo &&)' inline default trivial noexcept-unevaluated {{.*}}
+// CHECK: | | `-ParmVarDecl {{.*}} 'Foo &&'
+// CHECK: | | `-typeDetails: RValueReferenceType {{.*}} 'Foo &&'
+// CHECK: | | `-typeDetails: ElaboratedType {{.*}} 'Foo' sugar
+// CHECK: | | `-typeDetails: RecordType {{.*}} 'Foo'
+// CHECK: | | `-CXXRecord {{.*}} 'Foo'
+// CHECK: | |-CXXMethodDecl {{.*}} implicit constexpr operator= 'Foo &(const Foo &)' inline default trivial noexcept-unevaluated {{.*}}
+// CHECK: | | `-ParmVarDecl {{.*}} 'const Foo &'
+// CHECK: | | `-typeDetails: LValueReferenceType {{.*}} 'const Foo &'
+// CHECK: | | `-qualTypeDetail: QualType {{.*}} 'const Foo' const
+// CHECK: | | `-typeDetails: ElaboratedType {{.*}} 'Foo' sugar
+// CHECK: | | `-typeDetails: RecordType {{.*}} 'Foo'
+// CHECK: | | `-CXXRecord {{.*}} 'Foo'
+// CHECK: | |-CXXMethodDecl {{.*}} implicit constexpr operator= 'Foo &(Foo &&)' inline default trivial noexcept-unevaluated {{.*}}
+// CHECK: | | `-ParmVarDecl {{.*}} 'Foo &&'
+// CHECK: | | `-typeDetails: RValueReferenceType {{.*}} 'Foo &&'
+// CHECK: | | `-typeDetails: ElaboratedType {{.*}} 'Foo' sugar
+// CHECK: | | `-typeDetails: RecordType {{.*}} 'Foo'
+// CHECK: | | `-CXXRecord {{.*}} 'Foo'
+// CHECK: | `-CXXDestructorDecl {{.*}} implicit ~Foo 'void ()' inline default trivial noexcept-unevaluated {{.*}}
+// CHECK: |-VarDecl {{.*}} used foo 'struct Foo':'Foo' callinit
+// CHECK: | |-CXXConstructExpr {{.*}} 'struct Foo':'Foo' 'void () noexcept'
+// CHECK: | `-typeDetails: ElaboratedType {{.*}} 'struct Foo' sugar
+// CHECK: | `-typeDetails: RecordType {{.*}} 'Foo'
+// CHECK: | `-CXXRecord {{.*}} 'Foo'
+
void test(int x) {
- foo.abc;
- foo->func(x);
+ foo.abc;
+ foo->func(x);
}
+
+// CHECK: |-FunctionDecl {{.*}} test 'void (int)'
+// CHECK: | |-ParmVarDecl {{.*}} used x 'int'
+// CHECK: | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK: | `-CompoundStmt {{.*}}
+// CHECK: | |-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | `-DeclRefExpr {{.*}} 'struct Foo':'Foo' lvalue Var {{.*}} 'foo' 'struct Foo':'Foo'
+// CHECK: | `-CallExpr {{.*}} '<dependent type>' contains-errors
+// CHECK: | |-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | `-DeclRefExpr {{.*}} 'struct Foo':'Foo' lvalue Var {{.*}} 'foo' 'struct Foo':'Foo'
+// CHECK: | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int'
+
void AccessIncompleteClass() {
- struct Forward;
- Forward* ptr;
- // CHECK: CallExpr {{.*}} '<dependent type>'
- // CHECK-NEXT: `-CXXDependentScopeMemberExpr {{.*}} '<dependent type>'
- // CHECK-NEXT: `-RecoveryExpr {{.*}} '<dependent type>' contains-errors
- // CHECK-NEXT: `-DeclRefExpr {{.*}} 'Forward *'
- ptr->method();
+ struct Forward;
+ Forward* ptr;
+ ptr->method();
}
+// CHECK: |-FunctionDecl {{.*}} AccessIncompleteClass 'void ()'
+// CHECK: | `-CompoundStmt {{.*}}
+// CHECK: | |-DeclStmt {{.*}}
+// CHECK: | | `-CXXRecordDecl {{.*}} referenced struct Forward
+// CHECK: | |-DeclStmt {{.*}}
+// CHECK: | | `-VarDecl {{.*}} used ptr 'Forward *'
+// CHECK: | | `-typeDetails: PointerType {{.*}} 'Forward *'
+// CHECK: | | `-typeDetails: ElaboratedType {{.*}} 'Forward' sugar
+// CHECK: | | `-typeDetails: RecordType {{.*}} 'Forward'
+// CHECK: | | `-CXXRecord {{.*}} 'Forward'
+// CHECK: | `-CallExpr {{.*}} '<dependent type>' contains-errors
+// CHECK: | `-CXXDependentScopeMemberExpr {{.*}} '<dependent type>' contains-errors lvalue ->method
+// CHECK: | `-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | `-DeclRefExpr {{.*}} 'Forward *' lvalue Var {{.*}} 'ptr' 'Forward *'
+
struct Foo2 {
- double func();
- class ForwardClass;
- ForwardClass createFwd();
+ double func();
+ class ForwardClass;
+ ForwardClass createFwd();
- int overload();
- int overload(int, int);
+ int overload();
+ int overload(int, int);
};
+
+// CHECK: |-CXXRecordDecl {{.*}} referenced struct Foo2 definition
+// CHECK: | |-DefinitionData pass_in_registers empty aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor can_const_default_init
+// CHECK: | | |-DefaultConstructor exists trivial constexpr needs_implicit defaulted_is_constexpr
+// CHECK: | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | |-MoveConstructor exists simple trivial needs_implicit
+// CHECK: | | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | |-MoveAssignment exists simple trivial needs_implicit
+// CHECK: | | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK: | |-CXXRecordDecl {{.*}} implicit struct Foo2
+// CHECK: | |-CXXMethodDecl {{.*}} used func 'double ()'
+// CHECK: | |-CXXRecordDecl {{.*}} referenced class ForwardClass
+// CHECK: | |-CXXMethodDecl {{.*}} used createFwd 'ForwardClass ()'
+// CHECK: | |-CXXMethodDecl {{.*}} overload 'int ()'
+// CHECK: | `-CXXMethodDecl {{.*}} overload 'int (int, int)'
+// CHECK: | |-ParmVarDecl {{.*}} 'int'
+// CHECK: | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK: | `-ParmVarDecl {{.*}} 'int'
+// CHECK: | `-typeDetails: BuiltinType {{.*}} 'int'
+
void test2(Foo2 f) {
- // CHECK: RecoveryExpr {{.*}} 'double'
- // CHECK-NEXT: |-MemberExpr {{.*}} '<bound member function type>'
- // CHECK-NEXT: | `-DeclRefExpr {{.*}} 'f'
- // CHECK-NEXT: `-IntegerLiteral {{.*}} 'int' 1
- f.func(1);
- // CHECK: RecoveryExpr {{.*}} 'ForwardClass':'Foo2::ForwardClass'
- // CHECK-NEXT: `-MemberExpr {{.*}} '<bound member function type>' .createFwd
- // CHECK-NEXT: `-DeclRefExpr {{.*}} 'f'
- f.createFwd();
- // CHECK: RecoveryExpr {{.*}} 'int' contains-errors
- // CHECK-NEXT: |-UnresolvedMemberExpr
- // CHECK-NEXT: `-DeclRefExpr {{.*}} 'Foo2'
- // CHECK-NEXT: `-IntegerLiteral {{.*}} 'int' 1
- f.overload(1);
+ f.func(1);
+ f.createFwd();
+ f.overload(1);
}
-// CHECK: |-AlignedAttr {{.*}} alignas
-// CHECK-NEXT:| `-RecoveryExpr {{.*}} contains-errors
-// CHECK-NEXT:| `-UnresolvedLookupExpr {{.*}} 'invalid'
+// CHECK: |-FunctionDecl {{.*}} test2 'void (Foo2)'
+// CHECK: | |-ParmVarDecl {{.*}} used f 'Foo2'
+// CHECK: | | `-typeDetails: ElaboratedType {{.*}} 'Foo2' sugar
+// CHECK: | | `-typeDetails: RecordType {{.*}} 'Foo2'
+// CHECK: | | `-CXXRecord {{.*}} 'Foo2'
+// CHECK: | `-CompoundStmt {{.*}}
+// CHECK: | |-RecoveryExpr {{.*}} 'double' contains-errors
+// CHECK: | | |-MemberExpr {{.*}} '<bound member function type>' .func {{.*}}
+// CHECK: | | | `-DeclRefExpr {{.*}} 'Foo2' lvalue ParmVar {{.*}} 'f' 'Foo2'
+// CHECK: | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK: | |-RecoveryExpr {{.*}} 'ForwardClass':'Foo2::ForwardClass' contains-errors
+// CHECK: | | `-MemberExpr {{.*}} '<bound member function type>' .createFwd {{.*}}
+// CHECK: | | `-DeclRefExpr {{.*}} 'Foo2' lvalue ParmVar {{.*}} 'f' 'Foo2'
+// CHECK: | `-RecoveryExpr {{.*}} 'int' contains-errors
+// CHECK: | |-UnresolvedMemberExpr {{.*}} '<bound member function type>' lvalue
+// CHECK: | | `-DeclRefExpr {{.*}} 'Foo2' lvalue ParmVar {{.*}} 'f' 'Foo2'
+// CHECK: | `-IntegerLiteral {{.*}} 'int' 1
+
struct alignas(invalid()) Aligned {};
+// CHECK: |-CXXRecordDecl {{.*}} struct Aligned definition
+// CHECK: | |-DefinitionData pass_in_registers empty aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor can_const_default_init
+// CHECK: | | |-DefaultConstructor exists trivial constexpr needs_implicit defaulted_is_constexpr
+// CHECK: | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | |-MoveConstructor exists simple trivial needs_implicit
+// CHECK: | | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | |-MoveAssignment exists simple trivial needs_implicit
+// CHECK: | | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK: | |-attrDetails: AlignedAttr {{.*}} alignas
+// CHECK: | | `-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | `-UnresolvedLookupExpr {{.*}} '<overloaded function type>' lvalue (ADL) = 'invalid' empty
+// CHECK: | `-CXXRecordDecl {{.*}} implicit struct Aligned
+
auto f();
+
+// CHECK: |-FunctionDecl {{.*}} f 'auto ()'
+
int f(double);
-// CHECK: VarDecl {{.*}} unknown_type_call 'int'
-// CHECK-NEXT: `-RecoveryExpr {{.*}} '<dependent type>'
+
+// CHECK: |-FunctionDecl {{.*}} f 'int (double)'
+// CHECK: | `-ParmVarDecl {{.*}} 'double'
+// CHECK: | `-typeDetails: BuiltinType {{.*}} 'double'
+
int unknown_type_call = f(0, 0);
+// CHECK: |-VarDecl {{.*}} unknown_type_call 'int' cinit
+// CHECK: | |-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | |-UnresolvedLookupExpr {{.*}} '<overloaded function type>' lvalue (ADL) = 'f' {{.*}} {{.*}}
+// CHECK: | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK: | | `-IntegerLiteral {{.*}} 'int' 0
+// CHECK: | `-typeDetails: BuiltinType {{.*}} 'int'
+
void InvalidInitalizer(int x) {
- struct Bar { Bar(); };
- // CHECK: `-VarDecl {{.*}} a1 'Bar'
- // CHECK-NEXT: `-RecoveryExpr {{.*}} contains-errors
- // CHECK-NEXT: `-IntegerLiteral {{.*}} 'int' 1
- Bar a1(1);
- // CHECK: `-VarDecl {{.*}} a2 'Bar'
- // CHECK-NEXT: `-RecoveryExpr {{.*}} contains-errors
- // CHECK-NEXT: `-DeclRefExpr {{.*}} 'x'
- Bar a2(x);
- // CHECK: `-VarDecl {{.*}} a3 'Bar'
- // CHECK-NEXT: `-RecoveryExpr {{.*}} contains-errors
- // CHECK-NEXT: `-InitListExpr
- // CHECK-NEDT: `-DeclRefExpr {{.*}} 'x'
- Bar a3{x};
- // CHECK: `-VarDecl {{.*}} a4 'Bar'
- // CHECK-NEXT: `-ParenListExpr {{.*}} 'NULL TYPE' contains-errors
- // CHECK-NEXT: `-RecoveryExpr {{.*}} contains-errors
- // CHECK-NEXT: `-UnresolvedLookupExpr {{.*}} 'invalid'
- Bar a4(invalid());
- // CHECK: `-VarDecl {{.*}} a5 'Bar'
- // CHECK-NEXT: `-InitListExpr {{.*}} contains-errors
- // CHECK-NEXT: `-RecoveryExpr {{.*}} contains-errors
- // CHECK-NEXT: `-UnresolvedLookupExpr {{.*}} 'invalid'
- Bar a5{invalid()};
-
- // CHECK: `-VarDecl {{.*}} b1 'Bar'
- // CHECK-NEXT: `-RecoveryExpr {{.*}} contains-errors
- // CHECK-NEXT: `-IntegerLiteral {{.*}} 'int' 1
- Bar b1 = 1;
- // CHECK: `-VarDecl {{.*}} b2 'Bar'
- // CHECK-NEXT: `-RecoveryExpr {{.*}} contains-errors
- // CHECK-NEXT: `-InitListExpr
- Bar b2 = {1};
- // CHECK: `-VarDecl {{.*}} b3 'Bar'
- // CHECK-NEXT: `-RecoveryExpr {{.*}} 'Bar' contains-errors
- // CHECK-NEXT: `-DeclRefExpr {{.*}} 'x' 'int'
- Bar b3 = Bar(x);
- // CHECK: `-VarDecl {{.*}} b4 'Bar'
- // CHECK-NEXT: `-RecoveryExpr {{.*}} 'Bar' contains-errors
- // CHECK-NEXT: `-InitListExpr {{.*}} 'void'
- // CHECK-NEXT: `-DeclRefExpr {{.*}} 'x' 'int'
- Bar b4 = Bar{x};
- // CHECK: `-VarDecl {{.*}} b5 'Bar'
- // CHECK-NEXT: `-CXXUnresolvedConstructExpr {{.*}} 'Bar' contains-errors 'Bar'
- // CHECK-NEXT: `-RecoveryExpr {{.*}} contains-errors
- // CHECK-NEXT: `-UnresolvedLookupExpr {{.*}} 'invalid'
- Bar b5 = Bar(invalid());
- // CHECK: `-VarDecl {{.*}} b6 'Bar'
- // CHECK-NEXT: `-CXXUnresolvedConstructExpr {{.*}} 'Bar' contains-errors 'Bar'
- // CHECK-NEXT: `-InitListExpr {{.*}} contains-errors
- // CHECK-NEXT: `-RecoveryExpr {{.*}} contains-errors
- // CHECK-NEXT: `-UnresolvedLookupExpr {{.*}} 'invalid'
- Bar b6 = Bar{invalid()};
-
- // CHECK: RecoveryExpr {{.*}} 'Bar' contains-errors
- // CHECK-NEXT: `-IntegerLiteral {{.*}} 'int' 1
- Bar(1);
-
- // CHECK: `-VarDecl {{.*}} var1
- // CHECK-NEXT: `-BinaryOperator {{.*}} '<dependent type>' contains-errors
- // CHECK-NEXT: |-RecoveryExpr {{.*}} '<dependent type>' contains-errors
- // CHECK-NEXT: `-IntegerLiteral {{.*}} 'int' 1
- int var1 = undef + 1;
+ struct Bar { Bar(); };
+ Bar a1(1);
+ Bar a2(x);
+ Bar a3{x};
+ Bar a4(invalid());
+ Bar a5{invalid()};
+
+ Bar b1 = 1;
+ Bar b2 = {1};
+ Bar b3 = Bar(x);
+ Bar b4 = Bar{x};
+ Bar b5 = Bar(invalid());
+ Bar b6 = Bar{invalid()};
+
+ Bar(1);
+
+ int var1 = undef + 1;
}
+
+// CHECK: |-FunctionDecl {{.*}} InvalidInitalizer 'void (int)'
+// CHECK: | |-ParmVarDecl {{.*}} used x 'int'
+// CHECK: | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK: | `-CompoundStmt {{.*}}
+// CHECK: | |-DeclStmt {{.*}}
+// CHECK: | | `-CXXRecordDecl {{.*}} referenced struct Bar definition
+// CHECK: | | |-DefinitionData pass_in_registers empty standard_layout trivially_copyable has_user_declared_ctor can_const_default_init
+// CHECK: | | | |-DefaultConstructor exists non_trivial user_provided defaulted_is_constexpr
+// CHECK: | | | |-CopyConstructor simple trivial has_const_param implicit_has_const_param
+// CHECK: | | | |-MoveConstructor exists simple trivial
+// CHECK: | | | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | | |-MoveAssignment exists simple trivial needs_implicit
+// CHECK: | | | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK: | | |-CXXRecordDecl {{.*}} implicit referenced struct Bar
+// CHECK: | | |-CXXConstructorDecl {{.*}} Bar 'void ()'
+// CHECK: | | |-CXXConstructorDecl {{.*}} implicit constexpr Bar 'void (const Bar &)' inline default trivial noexcept-unevaluated {{.*}}
+// CHECK: | | | `-ParmVarDecl {{.*}} 'const Bar &'
+// CHECK: | | | `-typeDetails: LValueReferenceType {{.*}} 'const Bar &'
+// CHECK: | | | `-qualTypeDetail: QualType {{.*}} 'const Bar' const
+// CHECK: | | | `-typeDetails: ElaboratedType {{.*}} 'Bar' sugar
+// CHECK: | | | `-typeDetails: RecordType {{.*}} 'Bar'
+// CHECK: | | | `-CXXRecord {{.*}} 'Bar'
+// CHECK: | | `-CXXConstructorDecl {{.*}} implicit constexpr Bar 'void (Bar &&)' inline default trivial noexcept-unevaluated {{.*}}
+// CHECK: | | `-ParmVarDecl {{.*}} 'Bar &&'
+// CHECK: | | `-typeDetails: RValueReferenceType {{.*}} 'Bar &&'
+// CHECK: | | `-typeDetails: ElaboratedType {{.*}} 'Bar' sugar
+// CHECK: | | `-typeDetails: RecordType {{.*}} 'Bar'
+// CHECK: | | `-CXXRecord {{.*}} 'Bar'
+// CHECK: | |-DeclStmt {{.*}}
+// CHECK: | | `-VarDecl {{.*}} a1 'Bar' cinit
+// CHECK: | | |-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK: | | `-typeDetails: ElaboratedType {{.*}} 'Bar' sugar
+// CHECK: | | `-typeDetails: RecordType {{.*}} 'Bar'
+// CHECK: | | `-CXXRecord {{.*}} 'Bar'
+// CHECK: | |-DeclStmt {{.*}}
+// CHECK: | | `-VarDecl {{.*}} a2 'Bar' cinit
+// CHECK: | | |-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | | `-typeDetails: ElaboratedType {{.*}} 'Bar' sugar
+// CHECK: | | `-typeDetails: RecordType {{.*}} 'Bar'
+// CHECK: | | `-CXXRecord {{.*}} 'Bar'
+// CHECK: | |-DeclStmt {{.*}}
+// CHECK: | | `-VarDecl {{.*}} a3 'Bar' cinit
+// CHECK: | | |-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | | `-InitListExpr {{.*}} 'void'
+// CHECK: | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | | `-typeDetails: ElaboratedType {{.*}} 'Bar' sugar
+// CHECK: | | `-typeDetails: RecordType {{.*}} 'Bar'
+// CHECK: | | `-CXXRecord {{.*}} 'Bar'
+// CHECK: | |-DeclStmt {{.*}}
+// CHECK: | | `-VarDecl {{.*}} a4 'Bar' callinit
+// CHECK: | | |-ParenListExpr {{.*}} 'NULL TYPE' contains-errors
+// CHECK: | | | `-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | | `-UnresolvedLookupExpr {{.*}} '<overloaded function type>' lvalue (ADL) = 'invalid' empty
+// CHECK: | | `-typeDetails: ElaboratedType {{.*}} 'Bar' sugar
+// CHECK: | | `-typeDetails: RecordType {{.*}} 'Bar'
+// CHECK: | | `-CXXRecord {{.*}} 'Bar'
+// CHECK: | |-DeclStmt {{.*}}
+// CHECK: | | `-VarDecl {{.*}} a5 'Bar' listinit
+// CHECK: | | |-InitListExpr {{.*}} 'void' contains-errors
+// CHECK: | | | `-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | | `-UnresolvedLookupExpr {{.*}} '<overloaded function type>' lvalue (ADL) = 'invalid' empty
+// CHECK: | | `-typeDetails: ElaboratedType {{.*}} 'Bar' sugar
+// CHECK: | | `-typeDetails: RecordType {{.*}} 'Bar'
+// CHECK: | | `-CXXRecord {{.*}} 'Bar'
+// CHECK: | |-DeclStmt {{.*}}
+// CHECK: | | `-VarDecl {{.*}} b1 'Bar' cinit
+// CHECK: | | |-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK: | | `-typeDetails: ElaboratedType {{.*}} 'Bar' sugar
+// CHECK: | | `-typeDetails: RecordType {{.*}} 'Bar'
+// CHECK: | | `-CXXRecord {{.*}} 'Bar'
+// CHECK: | |-DeclStmt {{.*}}
+// CHECK: | | `-VarDecl {{.*}} b2 'Bar' cinit
+// CHECK: | | |-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | | `-InitListExpr {{.*}} 'void'
+// CHECK: | | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK: | | `-typeDetails: ElaboratedType {{.*}} 'Bar' sugar
+// CHECK: | | `-typeDetails: RecordType {{.*}} 'Bar'
+// CHECK: | | `-CXXRecord {{.*}} 'Bar'
+// CHECK: | |-DeclStmt {{.*}}
+// CHECK: | | `-VarDecl {{.*}} b3 'Bar' cinit
+// CHECK: | | |-RecoveryExpr {{.*}} 'Bar' contains-errors
+// CHECK: | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | | `-typeDetails: ElaboratedType {{.*}} 'Bar' sugar
+// CHECK: | | `-typeDetails: RecordType {{.*}} 'Bar'
+// CHECK: | | `-CXXRecord {{.*}} 'Bar'
+// CHECK: | |-DeclStmt {{.*}}
+// CHECK: | | `-VarDecl {{.*}} b4 'Bar' cinit
+// CHECK: | | |-RecoveryExpr {{.*}} 'Bar' contains-errors
+// CHECK: | | | `-InitListExpr {{.*}} 'void'
+// CHECK: | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: | | `-typeDetails: ElaboratedType {{.*}} 'Bar' sugar
+// CHECK: | | `-typeDetails: RecordType {{.*}} 'Bar'
+// CHECK: | | `-CXXRecord {{.*}} 'Bar'
+// CHECK: | |-DeclStmt {{.*}}
+// CHECK: | | `-VarDecl {{.*}} b5 'Bar' cinit
+// CHECK: | | |-CXXUnresolvedConstructExpr {{.*}} 'Bar' contains-errors 'Bar'
+// CHECK: | | | `-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | | `-UnresolvedLookupExpr {{.*}} '<overloaded function type>' lvalue (ADL) = 'invalid' empty
+// CHECK: | | `-typeDetails: ElaboratedType {{.*}} 'Bar' sugar
+// CHECK: | | `-typeDetails: RecordType {{.*}} 'Bar'
+// CHECK: | | `-CXXRecord {{.*}} 'Bar'
+// CHECK: | |-DeclStmt {{.*}}
+// CHECK: | | `-VarDecl {{.*}} b6 'Bar' cinit
+// CHECK: | | |-CXXUnresolvedConstructExpr {{.*}} 'Bar' contains-errors 'Bar' list
+// CHECK: | | | `-InitListExpr {{.*}} 'void' contains-errors
+// CHECK: | | | `-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | | `-UnresolvedLookupExpr {{.*}} '<overloaded function type>' lvalue (ADL) = 'invalid' empty
+// CHECK: | | `-typeDetails: ElaboratedType {{.*}} 'Bar' sugar
+// CHECK: | | `-typeDetails: RecordType {{.*}} 'Bar'
+// CHECK: | | `-CXXRecord {{.*}} 'Bar'
+// CHECK: | |-RecoveryExpr {{.*}} 'Bar' contains-errors
+// CHECK: | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK: | `-DeclStmt {{.*}}
+// CHECK: | `-VarDecl {{.*}} var1 'int' cinit
+// CHECK: | |-BinaryOperator {{.*}} '<dependent type>' contains-errors '+'
+// CHECK: | | |-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK: | `-typeDetails: BuiltinType {{.*}} 'int'
+
void InitializerForAuto() {
- // CHECK: `-VarDecl {{.*}} invalid a 'auto'
- // CHECK-NEXT: `-RecoveryExpr {{.*}} '<dependent type>' contains-errors
- // CHECK-NEXT: `-UnresolvedLookupExpr {{.*}} 'invalid'
- auto a = invalid();
-
- // CHECK: `-VarDecl {{.*}} invalid b 'auto'
- // CHECK-NEXT: `-CallExpr {{.*}} '<dependent type>' contains-errors
- // CHECK-NEXT: |-UnresolvedLookupExpr {{.*}} 'some_func'
- // CHECK-NEXT: `-RecoveryExpr {{.*}} '<dependent type>' contains-errors
- // CHECK-NEXT: `-UnresolvedLookupExpr {{.*}} 'invalid'
- auto b = some_func(invalid());
-
- decltype(ned);
- // very bad initailizer: there is an unresolved typo expr internally, we just
- // drop it.
- // CHECK: `-VarDecl {{.*}} invalid unresolved_typo 'auto'
- auto unresolved_typo = gned.*[] {};
+ auto a = invalid();
+ auto b = some_func(invalid());
+
+ decltype(ned);
+ auto unresolved_typo = gned.*[] {};
}
-// Verified that the generated call operator is invalid.
-// CHECK: |-CXXMethodDecl {{.*}} invalid operator() 'auto () const -> auto'
+// CHECK: |-FunctionDecl {{.*}} InitializerForAuto 'void ()'
+// CHECK: | `-CompoundStmt {{.*}}
+// CHECK: | |-DeclStmt {{.*}}
+// CHECK: | | `-VarDecl {{.*}} invalid a 'auto' cinit
+// CHECK: | | |-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | | `-UnresolvedLookupExpr {{.*}} '<overloaded function type>' lvalue (ADL) = 'invalid' empty
+// CHECK: | | `-typeDetails: AutoType {{.*}} 'auto' undeduced
+// CHECK: | |-DeclStmt {{.*}}
+// CHECK: | | `-VarDecl {{.*}} invalid b 'auto' cinit
+// CHECK: | | |-CallExpr {{.*}} '<dependent type>' contains-errors
+// CHECK: | | | |-UnresolvedLookupExpr {{.*}} '<overloaded function type>' lvalue (ADL) = 'some_func' {{.*}}
+// CHECK: | | | `-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | | `-UnresolvedLookupExpr {{.*}} '<overloaded function type>' lvalue (ADL) = 'invalid' empty
+// CHECK: | | `-typeDetails: AutoType {{.*}} 'auto' undeduced
+// CHECK: | `-DeclStmt {{.*}}
+// CHECK: | `-VarDecl {{.*}} invalid unresolved_typo 'auto'
+// CHECK: | `-typeDetails: AutoType {{.*}} 'auto' undeduced
+
+
using Escape = decltype([] { return undef(); }());
-// CHECK: VarDecl {{.*}} NoCrashOnInvalidInitList
-// CHECK-NEXT: `-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
-// CHECK-NEXT: `-InitListExpr
-// CHECK-NEXT: `-DesignatedInitExpr {{.*}} 'void'
-// CHECK-NEXT: `-CXXNullPtrLiteralExpr {{.*}} 'std::nullptr_t'
+// CHECK: |-CXXRecordDecl {{.*}} implicit class definition
+// CHECK: | |-DefinitionData lambda pass_in_registers empty standard_layout trivially_copyable literal can_const_default_init
+// CHECK: | | |-DefaultConstructor defaulted_is_constexpr
+// CHECK: | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | |-MoveConstructor exists simple trivial needs_implicit
+// CHECK: | | |-CopyAssignment trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | |-MoveAssignment
+// CHECK: | | `-Destructor simple irrelevant trivial
+// CHECK: | |-CXXMethodDecl {{.*}} invalid operator() 'auto () const -> auto' inline
+// CHECK: | | `-CompoundStmt {{.*}}
+// CHECK: | |-CXXConversionDecl {{.*}} implicit constexpr operator auto (*)() 'auto (*() const noexcept)() -> auto' inline
+// CHECK: | |-CXXMethodDecl {{.*}} implicit __invoke 'auto () -> auto' static inline
+// CHECK: | `-CXXDestructorDecl {{.*}}
+
+
struct {
- int& abc;
+ int& abc;
} NoCrashOnInvalidInitList = {
- .abc = nullptr,
+ .abc = nullptr,
};
+// CHECK: |-CXXRecordDecl {{.*}} struct definition
+// CHECK: | |-DefinitionData pass_in_registers aggregate trivially_copyable trivial literal
+// CHECK: | | |-DefaultConstructor exists trivial needs_implicit
+// CHECK: | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | |-MoveConstructor exists simple trivial needs_implicit
+// CHECK: | | |-CopyAssignment trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | |-MoveAssignment exists trivial needs_implicit
+// CHECK: | | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK: | `-FieldDecl {{.*}} abc 'int &'
+// CHECK: |-VarDecl {{.*}} NoCrashOnInvalidInitList
+// CHECK: | |-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | `-InitListExpr {{.*}} 'struct (unnamed struct
+// CHECK: | | `-DesignatedInitExpr {{.*}} 'void'
+// CHECK: | | `-CXXNullPtrLiteralExpr {{.*}} 'std::nullptr_t'
+// CHECK: | `-typeDetails: ElaboratedType {{.*}} 'struct
+// CHECK: | `-typeDetails: RecordType {{.*}}
+// CHECK: | `-CXXRecord {{.*}} ''
+
+
// Verify the value category of recovery expression.
int prvalue(int);
+
+// CHECK: |-FunctionDecl {{.*}} prvalue 'int (int)'
+// CHECK: | `-ParmVarDecl {{.*}} 'int'
+// CHECK: | `-typeDetails: BuiltinType {{.*}} 'int'
+
int &lvalue(int);
+
+// CHECK: |-FunctionDecl {{.*}} lvalue 'int &(int)'
+// CHECK: | `-ParmVarDecl {{.*}} 'int'
+// CHECK: | `-typeDetails: BuiltinType {{.*}} 'int'
+
int &&xvalue(int);
+
+// CHECK: |-FunctionDecl {{.*}} xvalue 'int &&(int)'
+// CHECK: | `-ParmVarDecl {{.*}} 'int'
+// CHECK: | `-typeDetails: BuiltinType {{.*}} 'int'
+
void ValueCategory() {
- // CHECK: RecoveryExpr {{.*}} 'int' contains-errors
- prvalue(); // call to a function (nonreference return type) yields a prvalue (not print by default)
- // CHECK: RecoveryExpr {{.*}} 'int' contains-errors lvalue
- lvalue(); // call to a function (lvalue reference return type) yields an lvalue.
- // CHECK: RecoveryExpr {{.*}} 'int' contains-errors xvalue
- xvalue(); // call to a function (rvalue reference return type) yields an xvalue.
+ prvalue(); // call to a function (nonreference return type) yields a prvalue (not print by default)
+ lvalue(); // call to a function (lvalue reference return type) yields an lvalue.
+ xvalue(); // call to a function (rvalue reference return type) yields an xvalue.
}
+// CHECK: |-FunctionDecl {{.*}} ValueCategory 'void ()'
+// CHECK: | `-CompoundStmt {{.*}}
+// CHECK: | |-RecoveryExpr {{.*}} 'int' contains-errors
+// CHECK: | | `-UnresolvedLookupExpr {{.*}} '<overloaded function type>' lvalue (ADL) = 'prvalue' {{.*}}
+// CHECK: | |-RecoveryExpr {{.*}} 'int' contains-errors lvalue
+// CHECK: | | `-UnresolvedLookupExpr {{.*}} '<overloaded function type>' lvalue (ADL) = 'lvalue' {{.*}}
+// CHECK: | `-RecoveryExpr {{.*}} 'int' contains-errors xvalue
+// CHECK: | `-UnresolvedLookupExpr {{.*}} '<overloaded function type>' lvalue (ADL) = 'xvalue' {{.*}}
+
void InvalidCondition() {
- // CHECK: IfStmt {{.*}}
- // CHECK-NEXT: |-RecoveryExpr {{.*}} <col:7, col:15> '<dependent type>' contains-errors
- // CHECK-NEXT: | `-UnresolvedLookupExpr {{.*}} <col:7>
- if (invalid()) {}
-
- // CHECK: WhileStmt {{.*}}
- // CHECK-NEXT: |-RecoveryExpr {{.*}} <col:10, col:18> '<dependent type>' contains-errors
- // CHECK-NEXT: | `-UnresolvedLookupExpr {{.*}} <col:10>
- while (invalid()) {}
-
- // CHECK: SwitchStmt {{.*}}
- // CHECK-NEXT: |-RecoveryExpr {{.*}} '<dependent type>' contains-errors
- // CHECK-NEXT: | `-UnresolvedLookupExpr {{.*}} <col:10>
- switch(invalid()) {
- case 1:
- break;
- }
- // FIXME: figure out why the type of ConditionalOperator is not int.
- // CHECK: ConditionalOperator {{.*}} '<dependent type>' contains-errors
- // CHECK-NEXT: |-RecoveryExpr {{.*}} '<dependent type>' contains-errors
- // CHECK-NEXT: | `-UnresolvedLookupExpr {{.*}}
- // CHECK-NEXT: |-IntegerLiteral {{.*}} 'int' 1
- // CHECK-NEXT: `-IntegerLiteral {{.*}} 'int' 2
- invalid() ? 1 : 2;
+ if (invalid()) {}
+
+ while (invalid()) {}
+
+ switch(invalid()) {
+ case 1:
+ break;
+ }
+
+ invalid() ? 1 : 2;
}
+
+// CHECK: |-FunctionDecl {{.*}} InvalidCondition 'void ()'
+// CHECK: | `-CompoundStmt {{.*}}
+// CHECK: | |-IfStmt {{.*}}
+// CHECK: | | |-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | | `-UnresolvedLookupExpr {{.*}} '<overloaded function type>' lvalue (ADL) = 'invalid' empty
+// CHECK: | | `-CompoundStmt {{.*}}
+// CHECK: | |-WhileStmt {{.*}}
+// CHECK: | | |-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | | `-UnresolvedLookupExpr {{.*}} '<overloaded function type>' lvalue (ADL) = 'invalid' empty
+// CHECK: | | `-CompoundStmt {{.*}}
+// CHECK: | |-SwitchStmt {{.*}}
+// CHECK: | | |-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | | `-UnresolvedLookupExpr {{.*}} '<overloaded function type>' lvalue (ADL) = 'invalid' empty
+// CHECK: | | `-CompoundStmt {{.*}}
+// CHECK: | | `-CaseStmt {{.*}}
+// CHECK: | | |-IntegerLiteral {{.*}} 'int' 1
+// CHECK: | | `-BreakStmt {{.*}}
+// CHECK: | `-ConditionalOperator {{.*}} '<dependent type>' contains-errors
+// CHECK: | |-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | `-UnresolvedLookupExpr {{.*}} '<overloaded function type>' lvalue (ADL) = 'invalid' empty
+// CHECK: | |-IntegerLiteral {{.*}} 'int' 1
+// CHECK: | `-IntegerLiteral {{.*}} 'int' 2
+
void CtorInitializer() {
- struct S{int m};
- class MemberInit {
- int x, y, z;
- S s;
- MemberInit() : x(invalid), y(invalid, invalid), z(invalid()), s(1,2) {}
- // CHECK: CXXConstructorDecl {{.*}} MemberInit 'void ()'
- // CHECK-NEXT: |-CXXCtorInitializer Field {{.*}} 'x' 'int'
- // CHECK-NEXT: | `-ParenListExpr
- // CHECK-NEXT: | `-RecoveryExpr {{.*}} '<dependent type>'
- // CHECK-NEXT: |-CXXCtorInitializer Field {{.*}} 'y' 'int'
- // CHECK-NEXT: | `-ParenListExpr
- // CHECK-NEXT: | |-RecoveryExpr {{.*}} '<dependent type>'
- // CHECK-NEXT: | `-RecoveryExpr {{.*}} '<dependent type>'
- // CHECK-NEXT: |-CXXCtorInitializer Field {{.*}} 'z' 'int'
- // CHECK-NEXT: | `-ParenListExpr
- // CHECK-NEXT: | `-RecoveryExpr {{.*}} '<dependent type>'
- // CHECK-NEXT: | `-UnresolvedLookupExpr {{.*}} '<overloaded function type>'
- // CHECK-NEXT: |-CXXCtorInitializer Field {{.*}} 's' 'S'
- // CHECK-NEXT: | `-RecoveryExpr {{.*}} 'S' contains-errors
- // CHECK-NEXT: | |-IntegerLiteral {{.*}} 1
- // CHECK-NEXT: | `-IntegerLiteral {{.*}} 2
- };
- class BaseInit : S {
- BaseInit(float) : S("no match") {}
- // CHECK: CXXConstructorDecl {{.*}} BaseInit 'void (float)'
- // CHECK-NEXT: |-ParmVarDecl
- // CHECK-NEXT: |-CXXCtorInitializer 'S'
- // CHECK-NEXT: | `-RecoveryExpr {{.*}} 'S'
- // CHECK-NEXT: | `-StringLiteral
-
- BaseInit(double) : S(invalid) {}
- // CHECK: CXXConstructorDecl {{.*}} BaseInit 'void (double)'
- // CHECK-NEXT: |-ParmVarDecl
- // CHECK-NEXT: |-CXXCtorInitializer 'S'
- // CHECK-NEXT: | `-ParenListExpr
- // CHECK-NEXT: | `-RecoveryExpr {{.*}} '<dependent type>'
- };
- class DelegatingInit {
- DelegatingInit(float) : DelegatingInit("no match") {}
- // CHECK: CXXConstructorDecl {{.*}} DelegatingInit 'void (float)'
- // CHECK-NEXT: |-ParmVarDecl
- // CHECK-NEXT: |-CXXCtorInitializer 'DelegatingInit'
- // CHECK-NEXT: | `-RecoveryExpr {{.*}} 'DelegatingInit'
- // CHECK-NEXT: | `-StringLiteral
-
- DelegatingInit(double) : DelegatingInit(invalid) {}
- // CHECK: CXXConstructorDecl {{.*}} DelegatingInit 'void (double)'
- // CHECK-NEXT: |-ParmVarDecl
- // CHECK-NEXT: |-CXXCtorInitializer 'DelegatingInit'
- // CHECK-NEXT: | `-ParenListExpr
- // CHECK-NEXT: | `-RecoveryExpr {{.*}} '<dependent type>'
- };
+ struct S{int m};
+ class MemberInit {
+ int x, y, z;
+ S s;
+ MemberInit() : x(invalid), y(invalid, invalid), z(invalid()), s(1,2) {}
+ };
+
+ class BaseInit : S {
+ BaseInit(float) : S("no match") {}
+
+ BaseInit(double) : S(invalid) {}
+ };
+
+ class DelegatingInit {
+ DelegatingInit(float) : DelegatingInit("no match") {}
+ DelegatingInit(double) : DelegatingInit(invalid) {}
+ };
}
+// CHECK: |-FunctionDecl {{.*}} CtorInitializer 'void ()'
+// CHECK: | `-CompoundStmt {{.*}}
+// CHECK: | |-DeclStmt {{.*}}
+// CHECK: | | `-CXXRecordDecl {{.*}} referenced struct S definition
+// CHECK: | | |-DefinitionData pass_in_registers aggregate standard_layout trivially_copyable pod trivial literal
+// CHECK: | | | |-DefaultConstructor exists trivial
+// CHECK: | | | |-CopyConstructor simple trivial has_const_param implicit_has_const_param
+// CHECK: | | | |-MoveConstructor exists simple trivial
+// CHECK: | | | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | | |-MoveAssignment exists simple trivial needs_implicit
+// CHECK: | | | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK: | | |-CXXRecordDecl {{.*}} implicit referenced struct S
+// CHECK: | | |-FieldDecl {{.*}} m 'int'
+// CHECK: | | |-CXXConstructorDecl {{.*}} implicit S 'void ()' inline default trivial noexcept-unevaluated {{.*}}
+// CHECK: | | |-CXXConstructorDecl {{.*}} implicit constexpr S 'void (const S &)' inline default trivial noexcept-unevaluated {{.*}}
+// CHECK: | | | `-ParmVarDecl {{.*}} 'const S &'
+// CHECK: | | | `-typeDetails: LValueReferenceType {{.*}} 'const S &'
+// CHECK: | | | `-qualTypeDetail: QualType {{.*}} 'const S' const
+// CHECK: | | | `-typeDetails: ElaboratedType {{.*}} 'S' sugar
+// CHECK: | | | `-typeDetails: RecordType {{.*}} 'S'
+// CHECK: | | | `-CXXRecord {{.*}} 'S'
+// CHECK: | | `-CXXConstructorDecl {{.*}} implicit constexpr S 'void (S &&)' inline default trivial noexcept-unevaluated {{.*}}
+// CHECK: | | `-ParmVarDecl {{.*}} 'S &&'
+// CHECK: | | `-typeDetails: RValueReferenceType {{.*}} 'S &&'
+// CHECK: | | `-typeDetails: ElaboratedType {{.*}} 'S' sugar
+// CHECK: | | `-typeDetails: RecordType {{.*}} 'S'
+// CHECK: | | `-CXXRecord {{.*}} 'S'
+// CHECK: | |-DeclStmt {{.*}}
+// CHECK: | | `-CXXRecordDecl {{.*}} class MemberInit definition
+// CHECK: | | |-DefinitionData pass_in_registers standard_layout trivially_copyable has_user_declared_ctor can_const_default_init
+// CHECK: | | | |-DefaultConstructor exists non_trivial user_provided
+// CHECK: | | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | | |-MoveConstructor exists simple trivial needs_implicit
+// CHECK: | | | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | | |-MoveAssignment exists simple trivial needs_implicit
+// CHECK: | | | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK: | | |-CXXRecordDecl {{.*}} implicit referenced class MemberInit
+// CHECK: | | |-FieldDecl {{.*}} x 'int'
+// CHECK: | | |-FieldDecl {{.*}} y 'int'
+// CHECK: | | |-FieldDecl {{.*}} z 'int'
+// CHECK: | | |-FieldDecl {{.*}} s 'S'
+// CHECK: | | `-CXXConstructorDecl {{.*}} MemberInit 'void ()' implicit-inline
+// CHECK: | | |-CXXCtorInitializer Field {{.*}} 'x' 'int'
+// CHECK: | | | `-ParenListExpr {{.*}} 'NULL TYPE' contains-errors
+// CHECK: | | | `-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | |-CXXCtorInitializer Field {{.*}} 'y' 'int'
+// CHECK: | | | `-ParenListExpr {{.*}} 'NULL TYPE' contains-errors
+// CHECK: | | | |-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | | `-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | |-CXXCtorInitializer Field {{.*}} 'z' 'int'
+// CHECK: | | | `-ParenListExpr {{.*}} 'NULL TYPE' contains-errors
+// CHECK: | | | `-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | | `-UnresolvedLookupExpr {{.*}} '<overloaded function type>' lvalue (ADL) = 'invalid' empty
+// CHECK: | | |-CXXCtorInitializer Field {{.*}} 's' 'S'
+// CHECK: | | | `-RecoveryExpr {{.*}} 'S' contains-errors
+// CHECK: | | | |-IntegerLiteral {{.*}} 'int' 1
+// CHECK: | | | `-IntegerLiteral {{.*}} 'int' 2
+// CHECK: | | `-CompoundStmt {{.*}}
+// CHECK: | |-DeclStmt {{.*}}
+// CHECK: | | `-CXXRecordDecl {{.*}} class BaseInit definition
+// CHECK: | | |-DefinitionData pass_in_registers standard_layout trivially_copyable has_user_declared_ctor can_const_default_init
+// CHECK: | | | |-DefaultConstructor
+// CHECK: | | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | | |-MoveConstructor exists simple trivial needs_implicit
+// CHECK: | | | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | | |-MoveAssignment exists simple trivial needs_implicit
+// CHECK: | | | `-Destructor simple irrelevant trivial needs_implicit
+// CHECK: | | |-private 'S'
+// CHECK: | | |-CXXRecordDecl {{.*}} implicit referenced class BaseInit
+// CHECK: | | |-CXXConstructorDecl {{.*}} BaseInit 'void (float)' implicit-inline
+// CHECK: | | | |-ParmVarDecl {{.*}} 'float'
+// CHECK: | | | | `-typeDetails: BuiltinType {{.*}} 'float'
+// CHECK: | | | |-CXXCtorInitializer 'S'
+// CHECK: | | | | `-RecoveryExpr {{.*}} 'S' contains-errors
+// CHECK: | | | | `-StringLiteral {{.*}} 'const char[9]' lvalue "no match"
+// CHECK: | | | `-CompoundStmt {{.*}}
+// CHECK: | | `-CXXConstructorDecl {{.*}} BaseInit 'void (double)' implicit-inline
+// CHECK: | | |-ParmVarDecl {{.*}} 'double'
+// CHECK: | | | `-typeDetails: BuiltinType {{.*}} 'double'
+// CHECK: | | |-CXXCtorInitializer 'S'
+// CHECK: | | | `-ParenListExpr {{.*}} 'NULL TYPE' contains-errors
+// CHECK: | | | `-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | `-CompoundStmt {{.*}}
+// CHECK: | `-DeclStmt {{.*}}
+// CHECK: | `-CXXRecordDecl {{.*}} class DelegatingInit definition
+// CHECK: | |-DefinitionData pass_in_registers empty standard_layout trivially_copyable has_user_declared_ctor can_const_default_init
+// CHECK: | | |-DefaultConstructor defaulted_is_constexpr
+// CHECK: | | |-CopyConstructor simple trivial has_const_param implicit_has_const_param
+// CHECK: | | |-MoveConstructor exists simple trivial
+// CHECK: | | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param
+// CHECK: | | |-MoveAssignment exists simple trivial needs_implicit
+// CHECK: | | `-Destructor simple irrelevant trivial
+// CHECK: | |-CXXRecordDecl {{.*}} implicit referenced class DelegatingInit
+// CHECK: | |-CXXConstructorDecl {{.*}} DelegatingInit 'void (float)' implicit-inline
+// CHECK: | | |-ParmVarDecl {{.*}} 'float'
+// CHECK: | | | `-typeDetails: BuiltinType {{.*}} 'float'
+// CHECK: | | |-CXXCtorInitializer 'DelegatingInit'
+// CHECK: | | | `-RecoveryExpr {{.*}} 'DelegatingInit' contains-errors
+// CHECK: | | | `-StringLiteral {{.*}} 'const char[9]' lvalue "no match"
+// CHECK: | | `-CompoundStmt {{.*}}
+// CHECK: | |-CXXConstructorDecl {{.*}} DelegatingInit 'void (double)' implicit-inline
+// CHECK: | | |-ParmVarDecl {{.*}} 'double'
+// CHECK: | | | `-typeDetails: BuiltinType {{.*}} 'double'
+// CHECK: | | |-CXXCtorInitializer 'DelegatingInit'
+// CHECK: | | | `-ParenListExpr {{.*}} 'NULL TYPE' contains-errors
+// CHECK: | | | `-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | `-CompoundStmt {{.*}}
+// CHECK: | |-CXXConstructorDecl {{.*}} implicit constexpr DelegatingInit 'void (const DelegatingInit &)' inline default trivial noexcept-unevaluated {{.*}}
+// CHECK: | | `-ParmVarDecl {{.*}} 'const DelegatingInit &'
+// CHECK: | | `-typeDetails: LValueReferenceType {{.*}} 'const DelegatingInit &'
+// CHECK: | | `-qualTypeDetail: QualType {{.*}} 'const DelegatingInit' const
+// CHECK: | | `-typeDetails: ElaboratedType {{.*}} 'DelegatingInit' sugar
+// CHECK: | | `-typeDetails: RecordType {{.*}} 'DelegatingInit'
+// CHECK: | | `-CXXRecord {{.*}} 'DelegatingInit'
+// CHECK: | |-CXXConstructorDecl {{.*}} implicit constexpr DelegatingInit 'void (DelegatingInit &&)' inline default trivial noexcept-unevaluated {{.*}}
+// CHECK: | | `-ParmVarDecl {{.*}} 'DelegatingInit &&'
+// CHECK: | | `-typeDetails: RValueReferenceType {{.*}} 'DelegatingInit &&'
+// CHECK: | | `-typeDetails: ElaboratedType {{.*}} 'DelegatingInit' sugar
+// CHECK: | | `-typeDetails: RecordType {{.*}} 'DelegatingInit'
+// CHECK: | | `-CXXRecord {{.*}} 'DelegatingInit'
+// CHECK: | `-CXXDestructorDecl {{.*}} implicit referenced ~DelegatingInit 'void () noexcept' inline default trivial
+
+
float *brokenReturn() {
- // CHECK: FunctionDecl {{.*}} brokenReturn
- return 42;
- // CHECK: ReturnStmt
- // CHECK-NEXT: `-RecoveryExpr {{.*}} 'float *'
- // CHECK-NEXT: `-IntegerLiteral {{.*}} 'int' 42
+ return 42;
}
+// CHECK: |-FunctionDecl {{.*}} brokenReturn 'float *()'
+// CHECK: | `-CompoundStmt {{.*}}
+// CHECK: | `-ReturnStmt {{.*}}
+// CHECK: | `-RecoveryExpr {{.*}} 'float *' contains-errors
+// CHECK: | `-IntegerLiteral {{.*}} 'int' 42
+
// Return deduction treats the first, second *and* third differently!
auto *brokenDeducedReturn(int *x, float *y, double *z) {
- // CHECK: FunctionDecl {{.*}} invalid brokenDeducedReturn
- if (x) return x;
- // CHECK: ReturnStmt
- // CHECK-NEXT: `-ImplicitCastExpr {{.*}} <LValueToRValue>
- // CHECK-NEXT: `-DeclRefExpr {{.*}} 'x' 'int *'
- if (y) return y;
- // CHECK: ReturnStmt
- // CHECK-NEXT: `-RecoveryExpr {{.*}} 'int *'
- // CHECK-NEXT: `-DeclRefExpr {{.*}} 'y' 'float *'
- if (z) return z;
- // CHECK: ReturnStmt
- // CHECK-NEXT: `-RecoveryExpr {{.*}} 'int *'
- // CHECK-NEXT: `-DeclRefExpr {{.*}} 'z' 'double *'
- return x;
- // Unfortunate: we wrap a valid return in RecoveryExpr.
- // This is to avoid running deduction again after it failed once.
- // CHECK: ReturnStmt
- // CHECK-NEXT: `-RecoveryExpr {{.*}} 'int *'
- // CHECK-NEXT: `-DeclRefExpr {{.*}} 'x' 'int *'
+ if (x) return x;
+ if (y) return y;
+ if (z) return z;
+ return x;
}
+// CHECK: |-FunctionDecl {{.*}} invalid brokenDeducedReturn 'int *(int *, float *, double *)'
+// CHECK: | |-ParmVarDecl {{.*}} used x 'int *'
+// CHECK: | | `-typeDetails: PointerType {{.*}} 'int *'
+// CHECK: | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK: | |-ParmVarDecl {{.*}} used y 'float *'
+// CHECK: | | `-typeDetails: PointerType {{.*}} 'float *'
+// CHECK: | | `-typeDetails: BuiltinType {{.*}} 'float'
+// CHECK: | |-ParmVarDecl {{.*}} used z 'double *'
+// CHECK: | | `-typeDetails: PointerType {{.*}} 'double *'
+// CHECK: | | `-typeDetails: BuiltinType {{.*}} 'double'
+// CHECK: | `-CompoundStmt {{.*}}
+// CHECK: | |-IfStmt {{.*}}
+// CHECK: | | |-ImplicitCastExpr {{.*}} 'bool' <PointerToBoolean>
+// CHECK: | | | `-ImplicitCastExpr {{.*}} 'int *' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} 'int *' lvalue ParmVar {{.*}} 'x' 'int *'
+// CHECK: | | `-ReturnStmt {{.*}}
+// CHECK: | | `-ImplicitCastExpr {{.*}} 'int *' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr {{.*}} 'int *' lvalue ParmVar {{.*}} 'x' 'int *'
+// CHECK: | |-IfStmt {{.*}}
+// CHECK: | | |-ImplicitCastExpr {{.*}} 'bool' <PointerToBoolean>
+// CHECK: | | | `-ImplicitCastExpr {{.*}} 'float *' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} 'float *' lvalue ParmVar {{.*}} 'y' 'float *'
+// CHECK: | | `-ReturnStmt {{.*}}
+// CHECK: | | `-RecoveryExpr {{.*}} 'int *' contains-errors
+// CHECK: | | `-DeclRefExpr {{.*}} 'float *' lvalue ParmVar {{.*}} 'y' 'float *'
+// CHECK: | |-IfStmt {{.*}}
+// CHECK: | | |-ImplicitCastExpr {{.*}} 'bool' <PointerToBoolean>
+// CHECK: | | | `-ImplicitCastExpr {{.*}} 'double *' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.*}} 'double *' lvalue ParmVar {{.*}} 'z' 'double *'
+// CHECK: | | `-ReturnStmt {{.*}}
+// CHECK: | | `-RecoveryExpr {{.*}} 'int *' contains-errors
+// CHECK: | | `-DeclRefExpr {{.*}} 'double *' lvalue ParmVar {{.*}} 'z' 'double *'
+// CHECK: | `-ReturnStmt {{.*}}
+// CHECK: | `-RecoveryExpr {{.*}} 'int *' contains-errors
+// CHECK: | `-DeclRefExpr {{.*}} 'int *' lvalue ParmVar {{.*}} 'x' 'int *'
+
+
void returnInitListFromVoid() {
- // CHECK: FunctionDecl {{.*}} returnInitListFromVoid
- return {7,8};
- // CHECK: ReturnStmt
- // CHECK-NEXT: `-RecoveryExpr {{.*}} '<dependent type>'
- // CHECK-NEXT: |-IntegerLiteral {{.*}} 'int' 7
- // CHECK-NEXT: `-IntegerLiteral {{.*}} 'int' 8
+ return {7,8};
}
+// CHECK: |-FunctionDecl {{.*}} returnInitListFromVoid 'void ()'
+// CHECK: | `-CompoundStmt {{.*}}
+// CHECK: | `-ReturnStmt {{.*}}
+// CHECK: | `-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | |-IntegerLiteral {{.*}} 'int' 7
+// CHECK: | `-IntegerLiteral {{.*}} 'int' 8
+
+
void RecoveryExprForInvalidDecls(Unknown InvalidDecl) {
- InvalidDecl + 1;
- // CHECK: BinaryOperator {{.*}}
- // CHECK-NEXT: |-RecoveryExpr {{.*}} '<dependent type>'
- // CHECK-NEXT: | | `-DeclRefExpr {{.*}} 'InvalidDecl' 'int'
- // CHECK-NEXT: `-IntegerLiteral {{.*}} 'int' 1
- InvalidDecl();
- // CHECK: CallExpr {{.*}}
- // CHECK-NEXT: `-RecoveryExpr {{.*}} '<dependent type>'
+ InvalidDecl + 1;
+ InvalidDecl();
}
+// CHECK: |-FunctionDecl {{.*}} invalid RecoveryExprForInvalidDecls 'void (int)'
+// CHECK: | |-ParmVarDecl {{.*}} referenced invalid InvalidDecl 'int'
+// CHECK: | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK: | `-CompoundStmt {{.*}}
+// CHECK: | |-BinaryOperator {{.*}} '<dependent type>' contains-errors '+'
+// CHECK: | | |-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'InvalidDecl' 'int'
+// CHECK: | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK: | `-CallExpr {{.*}} '<dependent type>' contains-errors
+// CHECK: | `-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'InvalidDecl' 'int'
+
+
void InitializerOfInvalidDecl() {
- int ValidDecl;
- Unkown InvalidDecl = ValidDecl;
- // CHECK: VarDecl {{.*}} invalid InvalidDecl
- // CHECK-NEXT: `-RecoveryExpr {{.*}} '<dependent type>' contains-errors
- // CHECK-NEXT: `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'ValidDecl'
-
- Unknown InvalidDeclWithInvalidInit = Invalid;
- // CHECK: VarDecl {{.*}} invalid InvalidDeclWithInvalidInit
- // CHECK-NEXT: `-RecoveryExpr {{.*}} '<dependent type>' contains-errors
- // CHECK-NOT: `-TypoExpr
+ int ValidDecl;
+ Unkown InvalidDecl = ValidDecl;
+ Unknown InvalidDeclWithInvalidInit = Invalid;
}
+// CHECK: |-FunctionDecl {{.*}} InitializerOfInvalidDecl 'void ()'
+// CHECK: | `-CompoundStmt {{.*}}
+// CHECK: | |-DeclStmt {{.*}}
+// CHECK: | | `-VarDecl {{.*}} used ValidDecl 'int'
+// CHECK: | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK: | |-DeclStmt {{.*}}
+// CHECK: | | `-VarDecl {{.*}} invalid InvalidDecl 'int' cinit
+// CHECK: | | |-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'ValidDecl' 'int'
+// CHECK: | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK: | `-DeclStmt {{.*}}
+// CHECK: | `-VarDecl {{.*}} invalid InvalidDeclWithInvalidInit 'int' cinit
+// CHECK: | |-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | `-typeDetails: BuiltinType {{.*}} 'int'
+
void RecoverToAnInvalidDecl() {
- Unknown* foo; // invalid decl
- goo; // the typo was correct to the invalid foo.
- // Verify that RecoveryExpr has an inner DeclRefExpr.
- // CHECK: RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
- // CHECK-NEXT: `-DeclRefExpr {{.*}} 'foo' 'int *'
+ Unknown* foo; // invalid decl
+ goo; // the typo was correct to the invalid foo.
+ // Verify that RecoveryExpr has an inner DeclRefExpr.
}
+// CHECK: |-FunctionDecl {{.*}} RecoverToAnInvalidDecl 'void ()'
+// CHECK: | `-CompoundStmt {{.*}}
+// CHECK: | |-DeclStmt {{.*}}
+// CHECK: | | `-VarDecl {{.*}} referenced invalid foo 'int *'
+// CHECK: | | `-typeDetails: PointerType {{.*}} 'int *'
+// CHECK: | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK: | `-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | `-DeclRefExpr {{.*}} 'int *' lvalue Var {{.*}} 'foo' 'int *'
+
void RecoveryToDoWhileStmtCond() {
- // CHECK: FunctionDecl {{.*}} RecoveryToDoWhileStmtCond
- // CHECK: `-DoStmt {{.*}}
- // CHECK-NEXT: |-CompoundStmt {{.*}}
- // CHECK-NEXT: `-BinaryOperator {{.*}} '<dependent type>' contains-errors '<'
- // CHECK-NEXT: |-BinaryOperator {{.*}} '<dependent type>' contains-errors '+'
- // CHECK-NEXT: | |-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
- // CHECK-NEXT: | `-IntegerLiteral {{.*}} 'int' 1
- // CHECK-NEXT: `-IntegerLiteral {{.*}} 'int' 10
- do {} while (some_invalid_val + 1 < 10);
+ do {} while (some_invalid_val + 1 < 10);
}
void RecoveryForStmtCond() {
- // CHECK:FunctionDecl {{.*}} RecoveryForStmtCond
- // CHECK-NEXT:`-CompoundStmt {{.*}}
- // CHECK-NEXT: `-ForStmt {{.*}}
- // CHECK-NEXT: |-DeclStmt {{.*}}
- // CHECK-NEXT: | `-VarDecl {{.*}}
- // CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:16> 'int' 0
- // CHECK-NEXT: |-<<<NULL>>>
- // CHECK-NEXT: |-RecoveryExpr {{.*}} 'bool' contains-errors
- // CHECK-NEXT: |-UnaryOperator {{.*}} 'int' lvalue prefix '++'
- // CHECK-NEXT: | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
- // CHECK-NEXT: `-CompoundStmt {{.*}}
- for (int i = 0; i < invalid; ++i) {}
+ for (int i = 0; i < invalid; ++i) {}
}
+
+// CHECK: |-FunctionDecl {{.*}} RecoveryToDoWhileStmtCond 'void ()'
+// CHECK: | `-CompoundStmt {{.*}}
+// CHECK: | `-DoStmt {{.*}}
+// CHECK: | |-CompoundStmt {{.*}}
+// CHECK: | `-BinaryOperator {{.*}} '<dependent type>' contains-errors '<'
+// CHECK: | |-BinaryOperator {{.*}} '<dependent type>' contains-errors '+'
+// CHECK: | | |-RecoveryExpr {{.*}} '<dependent type>' contains-errors lvalue
+// CHECK: | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK: | `-IntegerLiteral {{.*}} 'int' 10
+// CHECK: `-FunctionDecl {{.*}} RecoveryForStmtCond 'void ()'
+// CHECK: `-CompoundStmt {{.*}}
+// CHECK: `-ForStmt {{.*}}
+// CHECK: |-DeclStmt {{.*}}
+// CHECK: | `-VarDecl {{.*}} used i 'int' cinit
+// CHECK: | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK: | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK: |-<<<NULL>>>
+// CHECK: |-RecoveryExpr {{.*}} 'bool' contains-errors
+// CHECK: |-UnaryOperator {{.*}} 'int' lvalue prefix '++'
+// CHECK: | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
+// CHECK: `-CompoundStmt {{.*}}
diff --git a/clang/test/AST/ast-dump-recovery.m b/clang/test/AST/ast-dump-recovery.m
index 37fa8045c0b94..38f4217f2da86 100644
--- a/clang/test/AST/ast-dump-recovery.m
+++ b/clang/test/AST/ast-dump-recovery.m
@@ -17,16 +17,20 @@ void k(Foo *foo) {
foo.undef;
}
-// CHECK: |-VarDecl {{.*}} 'int (^)()' cinit
-// CHECK-NEXT: | `-RecoveryExpr {{.*}} '<dependent type> (^)(void)' contains-errors lvalue
-// CHECK-NEXT: | `-BlockExpr {{.*}} '<dependent type> (^)(void)'
-// CHECK-NEXT: | `-BlockDecl {{.*}} invalid
int (^gh63863)() = ^() {
return undef;
};
-// CHECK: `-BlockExpr {{.*}} 'int (^)(int, int)'
-// CHECK-NEXT: `-BlockDecl {{.*}} invalid
+// CHECK: |-VarDecl {{.*}} gh63863 'int (^)()' cinit
+// CHECK: | |-RecoveryExpr {{.*}} '<dependent type> (^)(void)' contains-errors lvalue
+// CHECK: | | `-BlockExpr {{.*}} '<dependent type> (^)(void)'
+// CHECK: | | `-BlockDecl {{.*}} invalid
+// CHECK: | | `-CompoundStmt {{.*}}
+// CHECK: | | `-ReturnStmt {{.*}}
+
int (^gh64005)(int, int) = ^(int, undefined b) {
return 1;
};
+
+// CHECK: `-BlockExpr {{.*}} 'int (^)(int, int)'
+// CHECK-NEXT: `-BlockDecl {{.*}} invalid
diff --git a/clang/test/AST/ast-dump-retain-subst-template-type-parm-type-ast-nodes.cpp b/clang/test/AST/ast-dump-retain-subst-template-type-parm-type-ast-nodes.cpp
index 97dc983e2436c..31a176a991439 100644
--- a/clang/test/AST/ast-dump-retain-subst-template-type-parm-type-ast-nodes.cpp
+++ b/clang/test/AST/ast-dump-retain-subst-template-type-parm-type-ast-nodes.cpp
@@ -6,13 +6,13 @@ using dump = X<int>;
// CHECK-LABEL: Dumping t1::dump:
// CHECK-NEXT: TypeAliasDecl
-// CHECK-NEXT: `-ElaboratedType
-// CHECK-NEXT: `-TemplateSpecializationType
+// CHECK-NEXT: `-typeDetails: ElaboratedType
+// CHECK-NEXT: `-typeDetails: TemplateSpecializationType
// CHECK-NEXT: |-name: 'X':'t1::X' qualified
// CHECK-NEXT: | `-TypeAliasTemplateDecl
// CHECK-NEXT: |-TemplateArgument
-// CHECK-NEXT: | `-BuiltinType {{.+}} 'int'
-// CHECK-NEXT: `-SubstTemplateTypeParmType 0x{{[0-9a-f]+}} 'int' sugar class depth 0 index 0 T
+// CHECK-NEXT: | `-typeDetails: BuiltinType {{.+}} 'int'
+// CHECK-NEXT: `-typeDetails: SubstTemplateTypeParmType 0x{{[0-9a-f]+}} 'int' sugar class depth 0 index 0 T
// CHECK-NEXT: |-TypeAliasTemplate {{.+}} 'X'
-// CHECK-NEXT: `-BuiltinType {{.+}} 'int'
+// CHECK-NEXT: `-typeDetails: BuiltinType {{.+}} 'int'
} // namespace t1
diff --git a/clang/test/AST/ast-dump-sme-attributes.cpp b/clang/test/AST/ast-dump-sme-attributes.cpp
index 133648d90a157..89edeb5f68f74 100644
--- a/clang/test/AST/ast-dump-sme-attributes.cpp
+++ b/clang/test/AST/ast-dump-sme-attributes.cpp
@@ -12,10 +12,10 @@ struct Foo {
// CHECK-NEXT: |-CXXMethodDecl {{.*}} f_streaming 'void () __arm_streaming'
// CHECK-NEXT: |-CXXMethodDecl {{.*}} f_streaming_compatible 'void () __arm_streaming_compatible'
// CHECK-NEXT: |-CXXMethodDecl {{.*}} f_locally_streaming 'void ()'
-// CHECK-NEXT: | `-ArmLocallyStreamingAttr
+// CHECK-NEXT: | `-attrDetails: ArmLocallyStreamingAttr
// CHECK-NEXT: |-CXXMethodDecl {{.*}} f_shared_za 'void () __arm_inout("za")'
// CHECK-NEXT: |-CXXMethodDecl {{.*}} f_new_za 'void ()'
-// CHECK-NEXT: | `-ArmNewAttr {{.*}} za
+// CHECK-NEXT: | `-attrDetails: ArmNewAttr {{.*}} za
// CHECK-NEXT: |-CXXMethodDecl {{.*}} f_preserves_za 'void () __arm_preserves("za")'
void f_streaming() __arm_streaming;
void f_streaming_compatible() __arm_streaming_compatible;
@@ -25,42 +25,52 @@ struct Foo {
void f_preserves_za() __arm_preserves("za");
-// CHECK: |-CXXMethodDecl {{.*}} test_lambda 'int (int)' implicit-inline
-// CHECK: `-CompoundStmt
-// CHECK-NEXT: |-DeclStmt
-// CHECK-NEXT: | `-VarDecl
-// CHECK-NEXT: | `-LambdaExpr
-// CHECK-NEXT: | |-CXXRecordDecl
-// CHECK: | | |-CXXMethodDecl {{.*}} used constexpr operator() 'int (int) __arm_streaming const' inline
-// CHECK: | | |-CXXConversionDecl {{.*}} implicit constexpr operator int (*)(int) __arm_streaming 'int (*() const noexcept)(int) __arm_streaming' inline
-// CHECK: | | |-CXXMethodDecl {{.*}} implicit __invoke 'int (int) __arm_streaming' static inline
-// CHECK: `-ReturnStmt
-// CHECK: `-CXXOperatorCallExpr
-// CHECK-NEXT: |-ImplicitCastExpr {{.*}} 'int (*)(int) __arm_streaming const' <FunctionToPointerDecay>
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} 'int (int) __arm_streaming const' lvalue CXXMethod {{.*}} 'operator()' 'int (int) __arm_streaming const'
+
int test_lambda(int x) {
auto F = [](int x) __arm_streaming { return x; };
return F(x);
}
-// CHECK: |-TypedefDecl {{.*}} referenced s_ptrty 'void (*)(int, int) __arm_streaming'
-// CHECK-NEXT: | `-PointerType {{.*}} 'void (*)(int, int) __arm_streaming'
-// CHECK-NEXT: | `-ParenType {{.*}} 'void (int, int) __arm_streaming' sugar
-// CHECK-NEXT: | `-FunctionProtoType {{.*}} 'void (int, int) __arm_streaming' cdecl
+// CHECK: |-CXXMethodDecl {{.*}} test_lambda 'int (int)' implicit-inline
+// CHECK: | |-ParmVarDecl {{.*}} used x 'int'
+// CHECK: | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK: | `-CompoundStmt {{.*}}
+// CHECK: | |-DeclStmt {{.*}}
+// CHECK: | | `-VarDecl {{.*}} used F '(lambda at {{.*}})' cinit
+// CHECK: | | |-LambdaExpr {{.*}} <col:14, col:52> '(lambda at {{.*}})'
+
typedef void (*s_ptrty) (int, int) __arm_streaming;
-// CHECK: `-CXXMethodDecl {{.*}} test_streaming_ptrty 'void (s_ptrty, int, int)' implicit-inline
-// CHECK-NEXT: |-ParmVarDecl {{.*}} used f 's_ptrty':'void (*)(int, int) __arm_streaming'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} used x 'int'
-// CHECK-NEXT: |-ParmVarDecl {{.*}} used y 'int'
-// CHECK: `-CompoundStmt
-// CHECK-NEXT: `-ReturnStmt
-// CHECK-NEXT: `-CallExpr
-// CHECK-NEXT: |-ImplicitCastExpr {{.*}} 's_ptrty':'void (*)(int, int) __arm_streaming' <LValueToRValue>
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} 's_ptrty':'void (*)(int, int) __arm_streaming' lvalue ParmVar {{.*}} 'f' 's_ptrty':'void (*)(int, int) __arm_streaming'
-// CHECK-NEXT: |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
-// CHECK-NEXT: | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int'
-// CHECK-NEXT: `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
-// CHECK-NEXT: `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int'
+// CHECK: |-TypedefDecl {{.*}} referenced s_ptrty 'void (*)(int, int) __arm_streaming'
+// CHECK-NEXT: | `-typeDetails: PointerType {{.*}} 'void (*)(int, int) __arm_streaming'
+// CHECK-NEXT: | `-typeDetails: ParenType {{.*}} 'void (int, int) __arm_streaming' sugar
+// CHECK-NEXT: | `-typeDetails: FunctionProtoType {{.*}} 'void (int, int) __arm_streaming' cdecl
+
void test_streaming_ptrty(s_ptrty f, int x, int y) { return f(x, y); };
+
+// CHECK: `-CXXMethodDecl {{.*}} test_streaming_ptrty 'void (s_ptrty, int, int)' implicit-inline
+// CHECK: |-ParmVarDecl {{.*}} used f 's_ptrty':'void (*)(int, int) __arm_streaming'
+// CHECK: | `-typeDetails: ElaboratedType {{.*}} 's_ptrty' sugar
+// CHECK: | `-typeDetails: TypedefType {{.*}} 'Foo::s_ptrty' sugar
+// CHECK: | |-Typedef {{.*}} 's_ptrty'
+// CHECK: | `-typeDetails: PointerType {{.*}} 'void (*)(int, int) __arm_streaming'
+// CHECK: | `-typeDetails: ParenType {{.*}} 'void (int, int) __arm_streaming' sugar
+// CHECK: | `-typeDetails: FunctionProtoType {{.*}} 'void (int, int) __arm_streaming' cdecl
+// CHECK: | |-typeDetails: BuiltinType {{.*}} 'void'
+// CHECK: | |-functionDetails: cdeclReturnType {{.*}} 'void'
+// CHECK: | |-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK: | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK: |-ParmVarDecl {{.*}} used x 'int'
+// CHECK: | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK: |-ParmVarDecl {{.*}} used y 'int'
+// CHECK: | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK: `-CompoundStmt {{.*}}
+// CHECK: `-ReturnStmt {{.*}}
+// CHECK: `-CallExpr {{.*}} 'void'
+// CHECK: |-ImplicitCastExpr {{.*}} 's_ptrty':'void (*)(int, int) __arm_streaming' <LValueToRValue>
+// CHECK: | `-DeclRefExpr {{.*}} 's_ptrty':'void (*)(int, int) __arm_streaming' lvalue ParmVar {{.*}} 'f' 's_ptrty':'void (*)(int, int) __arm_streaming'
+// CHECK: |-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK: | `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'x' 'int'
+// CHECK: `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK: `-DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'y' 'int'
};
diff --git a/clang/test/AST/ast-dump-stmt-json.c b/clang/test/AST/ast-dump-stmt-json.c
index a7f5648b8075f..03252a9a8134d 100644
--- a/clang/test/AST/ast-dump-stmt-json.c
+++ b/clang/test/AST/ast-dump-stmt-json.c
@@ -1,5480 +1,6038 @@
-// RUN: %clang_cc1 -std=gnu11 -triple x86_64-unknown-unknown -ast-dump=json %s | FileCheck %s
-
-int TestLocation = 0;
-int TestIndent = 1 + (1);
-
-void TestDeclStmt(void) {
- int x = 0;
- int y, z;
-}
-
-int TestOpaqueValueExpr = 0 ?: 1;
-
-void TestUnaryOperatorExpr(void) {
- char T1 = 1;
- int T2 = 1;
-
- T1++;
- T2++;
-
- -T1;
- -T2;
-
- ~T1;
- ~T2;
-}
-
-void TestGenericSelectionExpressions(int i) {
- _Generic(i, int : 12);
- _Generic(i, int : 12, default : 0);
- _Generic(i, default : 0, int : 12);
- _Generic(i, int : 12, float : 10, default : 100);
-
- int j = _Generic(i, int : 12);
-}
-
-void TestLabelsAndGoto(void) {
- // Note: case and default labels are handled by TestSwitch().
-
-label1:
- ;
-
- goto label2;
-
-label2:
- 0;
-
- void *ptr = &&label1;
-
- goto *ptr;
-}
-
-void TestSwitch(int i) {
- switch (i) {
- case 0:
- break;
- case 1:
- case 2:
- break;
- default:
- break;
- case 3 ... 5:
- break;
- }
-}
-
-void TestIf(_Bool b) {
- if (b)
- ;
-
- if (b) {}
-
- if (b)
- ;
- else
- ;
-
- if (b) {}
- else {}
-
- if (b)
- ;
- else if (b)
- ;
-
- if (b)
- ;
- else if (b)
- ;
- else
- ;
-}
-
-void TestIteration(_Bool b) {
- while (b)
- ;
-
- do
- ;
- while (b);
-
- for (int i = 0; i < 10; ++i)
- ;
-
- for (b; b; b)
- ;
-
- for (; b; b = !b)
- ;
-
- for (; b;)
- ;
-
- for (;; b = !b)
- ;
-
- for (;;)
- ;
-}
-
-void TestJumps(void) {
- // goto and computed goto was tested in TestLabelsAndGoto().
-
- while (1) {
- continue;
- break;
- }
- return;
-
- return TestSwitch(1);
-}
-
-void TestMiscStmts(void) {
- ({int a = 10; a;});
-}
-
-void TestLineNumbers(void) {
- int a;
-
-#define FOO(x) x
-
-#line 100000
- int b;
-
-#line 200000
- FOO(1);
-
-#undef FOO
-}
-
-void TestVLA(int n) {
- double vla[n];
-}
-
-// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
-// using --filters=VarDecl,CompoundStmt
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 3,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 12
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestLocation",
-// CHECK-NEXT: "mangledName": "TestLocation",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 4,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestIndent",
-// CHECK-NEXT: "mangledName": "TestIndent",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "+",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "1"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParenExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "1"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 6,
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 9,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 7,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 8,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "y",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "z",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 11,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 32,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestOpaqueValueExpr",
-// CHECK-NEXT: "mangledName": "TestOpaqueValueExpr",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryConditionalOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 32,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "OpaqueValueExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 32,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 32,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "1"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 13,
-// CHECK-NEXT: "col": 34,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 25,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 14,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "T1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralCast",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "1"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 15,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "T2",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "1"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 17,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "isPostfix": true,
-// CHECK-NEXT: "opcode": "++",
-// CHECK-NEXT: "canOverflow": false,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "T1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 18,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "isPostfix": true,
-// CHECK-NEXT: "opcode": "++",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "T2",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 20,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "isPostfix": false,
-// CHECK-NEXT: "opcode": "-",
-// CHECK-NEXT: "canOverflow": false,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralCast",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "T1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 21,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "isPostfix": false,
-// CHECK-NEXT: "opcode": "-",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "T2",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 23,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "isPostfix": false,
-// CHECK-NEXT: "opcode": "~",
-// CHECK-NEXT: "canOverflow": false,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralCast",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "T1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 24,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "isPostfix": false,
-// CHECK-NEXT: "opcode": "~",
-// CHECK-NEXT: "canOverflow": false,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "T2",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 45,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 34,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "GenericSelectionExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 28,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "nonOdrUseReason": "unevaluated"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "associationKind": "case",
-// CHECK-NEXT: "selected": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "12"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "GenericSelectionExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 29,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 36,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "nonOdrUseReason": "unevaluated"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "associationKind": "case",
-// CHECK-NEXT: "selected": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "12"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "associationKind": "default",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 35,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 35,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "GenericSelectionExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 30,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 36,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "nonOdrUseReason": "unevaluated"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "associationKind": "default",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "associationKind": "case",
-// CHECK-NEXT: "selected": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 34,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 34,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "12"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "GenericSelectionExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 31,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 50,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "nonOdrUseReason": "unevaluated"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "associationKind": "case",
-// CHECK-NEXT: "selected": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "12"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "associationKind": "case",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 33,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 33,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "10"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "associationKind": "default",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 47,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 47,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "100"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 33,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 32,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 31,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "j",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "GenericSelectionExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 31,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "nonOdrUseReason": "unevaluated"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "associationKind": "case",
-// CHECK-NEXT: "selected": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "12"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 36,
-// CHECK-NEXT: "col": 30,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 50,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "LabelStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 39,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 40,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "label1",
-// CHECK-NEXT: "declId": "0x{{.*}}",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NullStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "GotoStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 42,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "targetLabelDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "LabelStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 44,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 45,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "label2",
-// CHECK-NEXT: "declId": "0x{{.*}}",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 47,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "ptr",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "AddrLabelExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "name": "label1",
-// CHECK-NEXT: "labelDeclId": "0x{{.*}}"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IndirectGotoStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 49,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const void *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "NoOp",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "ptr",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 64,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "SwitchStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 53,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 63,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 53,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 63,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CaseStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 54,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 55,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ConstantExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 54,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BreakStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 55,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CaseStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 56,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 58,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ConstantExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 56,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "1"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CaseStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 57,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 58,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ConstantExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 57,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "2"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BreakStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 58,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DefaultStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 59,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 7
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 60,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BreakStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CaseStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 61,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 62,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isGNURange": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ConstantExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 61,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "3"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ConstantExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "5"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BreakStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 62,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 91,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IfStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 67,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 68,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 67,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NullStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 68,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IfStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 70,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IfStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 72,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 75,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasElse": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 72,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NullStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 73,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NullStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 75,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IfStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 77,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 78,
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasElse": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 77,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 78,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IfStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 80,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 83,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasElse": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 80,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NullStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 81,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IfStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 82,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 83,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 82,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NullStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 83,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IfStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 85,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 90,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasElse": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 85,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NullStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 86,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IfStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 87,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 90,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasElse": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 87,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NullStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 88,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NullStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 90,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 118,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "WhileStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 94,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 95,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 94,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NullStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 95,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DoStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 97,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 99,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NullStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 98,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 99,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ForStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 101,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 102,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 101,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {},
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "<",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "10"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "isPostfix": false,
-// CHECK-NEXT: "opcode": "++",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NullStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 102,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ForStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 104,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 105,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 104,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {},
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NullStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 105,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ForStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 107,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 108,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {},
-// CHECK-NEXT: {},
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 107,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "=",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralToBoolean",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "isPostfix": false,
-// CHECK-NEXT: "opcode": "!",
-// CHECK-NEXT: "canOverflow": false,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NullStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 108,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ForStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 110,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 111,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {},
-// CHECK-NEXT: {},
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 110,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {},
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NullStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 111,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ForStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 113,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 114,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {},
-// CHECK-NEXT: {},
-// CHECK-NEXT: {},
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 113,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "=",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralToBoolean",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "isPostfix": false,
-// CHECK-NEXT: "opcode": "!",
-// CHECK-NEXT: "canOverflow": false,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Bool"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NullStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 114,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ForStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 116,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 117,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {},
-// CHECK-NEXT: {},
-// CHECK-NEXT: {},
-// CHECK-NEXT: {},
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NullStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 120,
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 130,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "WhileStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 123,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 126,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 123,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "1"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 126,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ContinueStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 124,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BreakStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 125,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ReturnStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 127,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ReturnStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 129,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CallExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (*)(int)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "FunctionToPointerDecay",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (int)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "name": "TestSwitch",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (int)"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "1"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 132,
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 134,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "StmtExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 133,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "10"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 136,
-// CHECK-NEXT: "col": 28,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 148,
-// CHECK-NEXT: "presumedLine": 200003,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 137,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 142,
-// CHECK-NEXT: "presumedLine": 100000,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "spellingLoc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 145,
-// CHECK-NEXT: "presumedLine": 200000,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "expansionLoc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3,
-// CHECK-NEXT: "isMacroArgExpansion": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "spellingLoc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "expansionLoc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3,
-// CHECK-NEXT: "isMacroArgExpansion": true
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "1"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 152,
-// CHECK-NEXT: "presumedLine": 200007,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 151,
-// CHECK-NEXT: "presumedLine": 200006,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "vla",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "double[n]"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
+// RUN: %clang_cc1 -std=gnu11 -triple x86_64-unknown-unknown -ast-dump=json %s | FileCheck %s
+
+int TestLocation = 0;
+int TestIndent = 1 + (1);
+
+void TestDeclStmt(void) {
+ int x = 0;
+ int y, z;
+}
+
+int TestOpaqueValueExpr = 0 ?: 1;
+
+void TestUnaryOperatorExpr(void) {
+ char T1 = 1;
+ int T2 = 1;
+
+ T1++;
+ T2++;
+
+ -T1;
+ -T2;
+
+ ~T1;
+ ~T2;
+}
+
+void TestGenericSelectionExpressions(int i) {
+ _Generic(i, int : 12);
+ _Generic(i, int : 12, default : 0);
+ _Generic(i, default : 0, int : 12);
+ _Generic(i, int : 12, float : 10, default : 100);
+
+ int j = _Generic(i, int : 12);
+}
+
+void TestLabelsAndGoto(void) {
+ // Note: case and default labels are handled by TestSwitch().
+
+label1:
+ ;
+
+ goto label2;
+
+label2:
+ 0;
+
+ void *ptr = &&label1;
+
+ goto *ptr;
+}
+
+void TestSwitch(int i) {
+ switch (i) {
+ case 0:
+ break;
+ case 1:
+ case 2:
+ break;
+ default:
+ break;
+ case 3 ... 5:
+ break;
+ }
+}
+
+void TestIf(_Bool b) {
+ if (b)
+ ;
+
+ if (b) {}
+
+ if (b)
+ ;
+ else
+ ;
+
+ if (b) {}
+ else {}
+
+ if (b)
+ ;
+ else if (b)
+ ;
+
+ if (b)
+ ;
+ else if (b)
+ ;
+ else
+ ;
+}
+
+void TestIteration(_Bool b) {
+ while (b)
+ ;
+
+ do
+ ;
+ while (b);
+
+ for (int i = 0; i < 10; ++i)
+ ;
+
+ for (b; b; b)
+ ;
+
+ for (; b; b = !b)
+ ;
+
+ for (; b;)
+ ;
+
+ for (;; b = !b)
+ ;
+
+ for (;;)
+ ;
+}
+
+void TestJumps(void) {
+ // goto and computed goto was tested in TestLabelsAndGoto().
+
+ while (1) {
+ continue;
+ break;
+ }
+ return;
+
+ return TestSwitch(1);
+}
+
+void TestMiscStmts(void) {
+ ({int a = 10; a;});
+}
+
+void TestLineNumbers(void) {
+ int a;
+
+#define FOO(x) x
+
+#line 100000
+ int b;
+
+#line 200000
+ FOO(1);
+
+#undef FOO
+}
+
+void TestVLA(int n) {
+ double vla[n];
+}
+
+// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
+// using --filters=VarDecl,CompoundStmt
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 101,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 3,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 12
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 97,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 116,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestLocation",
+// CHECK-NEXT: "mangledName": "TestLocation",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 116,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 116,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 124,
+// CHECK-NEXT: "line": 4,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 120,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 143,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestIndent",
+// CHECK-NEXT: "mangledName": "TestIndent",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 137,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 143,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "+",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 137,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 137,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "1"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParenExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 141,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 143,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 142,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 142,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "1"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 173,
+// CHECK-NEXT: "line": 6,
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 203,
+// CHECK-NEXT: "line": 9,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 178,
+// CHECK-NEXT: "line": 7,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 187,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 182,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 178,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 186,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 186,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 186,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 192,
+// CHECK-NEXT: "line": 8,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 200,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 196,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 192,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 196,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "y",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 199,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 192,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 199,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "z",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 212,
+// CHECK-NEXT: "line": 11,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 208,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 239,
+// CHECK-NEXT: "col": 32,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestOpaqueValueExpr",
+// CHECK-NEXT: "mangledName": "TestOpaqueValueExpr",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryConditionalOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 234,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 239,
+// CHECK-NEXT: "col": 32,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 234,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 234,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 234,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 234,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 234,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 234,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "OpaqueValueExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 234,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 234,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 234,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 234,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 239,
+// CHECK-NEXT: "col": 32,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 239,
+// CHECK-NEXT: "col": 32,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "1"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 278,
+// CHECK-NEXT: "line": 13,
+// CHECK-NEXT: "col": 34,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 368,
+// CHECK-NEXT: "line": 25,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 283,
+// CHECK-NEXT: "line": 14,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 294,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 288,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 283,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 293,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "T1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 293,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 293,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralCast",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 293,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 293,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "1"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 299,
+// CHECK-NEXT: "line": 15,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 309,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 303,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 299,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 308,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "T2",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 308,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 308,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "1"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UnaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 316,
+// CHECK-NEXT: "line": 17,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 318,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "isPostfix": true,
+// CHECK-NEXT: "opcode": "++",
+// CHECK-NEXT: "canOverflow": false,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 316,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 316,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "T1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UnaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 325,
+// CHECK-NEXT: "line": 18,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 327,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "isPostfix": true,
+// CHECK-NEXT: "opcode": "++",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 325,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 325,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "T2",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UnaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 336,
+// CHECK-NEXT: "line": 20,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 337,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "isPostfix": false,
+// CHECK-NEXT: "opcode": "-",
+// CHECK-NEXT: "canOverflow": false,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 337,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 337,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralCast",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 337,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 337,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 337,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 337,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "T1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UnaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 344,
+// CHECK-NEXT: "line": 21,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 345,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "isPostfix": false,
+// CHECK-NEXT: "opcode": "-",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 345,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 345,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 345,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 345,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "T2",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UnaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 354,
+// CHECK-NEXT: "line": 23,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 355,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "isPostfix": false,
+// CHECK-NEXT: "opcode": "~",
+// CHECK-NEXT: "canOverflow": false,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 355,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 355,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralCast",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 355,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 355,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 355,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 355,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "T1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UnaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 362,
+// CHECK-NEXT: "line": 24,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 363,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "isPostfix": false,
+// CHECK-NEXT: "opcode": "~",
+// CHECK-NEXT: "canOverflow": false,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 363,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 363,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 363,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 363,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "T2",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 417,
+// CHECK-NEXT: "col": 45,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 613,
+// CHECK-NEXT: "line": 34,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "GenericSelectionExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 422,
+// CHECK-NEXT: "line": 28,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 442,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 431,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 431,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 431,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 431,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "nonOdrUseReason": "unevaluated",
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "associationKind": "case",
+// CHECK-NEXT: "selected": true,
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 440,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 440,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "12"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "GenericSelectionExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 448,
+// CHECK-NEXT: "line": 29,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 481,
+// CHECK-NEXT: "col": 36,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 457,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 457,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 457,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 457,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "nonOdrUseReason": "unevaluated",
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "associationKind": "case",
+// CHECK-NEXT: "selected": true,
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 466,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 466,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "12"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "associationKind": "default",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 480,
+// CHECK-NEXT: "col": 35,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 480,
+// CHECK-NEXT: "col": 35,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "GenericSelectionExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 487,
+// CHECK-NEXT: "line": 30,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 520,
+// CHECK-NEXT: "col": 36,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 496,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 496,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 496,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 496,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "nonOdrUseReason": "unevaluated",
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "associationKind": "default",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 509,
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 509,
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "associationKind": "case",
+// CHECK-NEXT: "selected": true,
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 518,
+// CHECK-NEXT: "col": 34,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 518,
+// CHECK-NEXT: "col": 34,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "12"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "GenericSelectionExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 526,
+// CHECK-NEXT: "line": 31,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 573,
+// CHECK-NEXT: "col": 50,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 535,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 535,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 535,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 535,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "nonOdrUseReason": "unevaluated",
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "associationKind": "case",
+// CHECK-NEXT: "selected": true,
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 544,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 544,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "12"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "associationKind": "case",
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "float"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "fpp"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 556,
+// CHECK-NEXT: "col": 33,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 556,
+// CHECK-NEXT: "col": 33,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "10"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "associationKind": "default",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 570,
+// CHECK-NEXT: "col": 47,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 570,
+// CHECK-NEXT: "col": 47,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "100"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 581,
+// CHECK-NEXT: "line": 33,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 610,
+// CHECK-NEXT: "col": 32,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 585,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 581,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 609,
+// CHECK-NEXT: "col": 31,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "j",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "GenericSelectionExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 589,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 609,
+// CHECK-NEXT: "col": 31,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 598,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 598,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 598,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 598,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "nonOdrUseReason": "unevaluated",
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "associationKind": "case",
+// CHECK-NEXT: "selected": true,
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 607,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 607,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "12"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 647,
+// CHECK-NEXT: "line": 36,
+// CHECK-NEXT: "col": 30,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 809,
+// CHECK-NEXT: "line": 50,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "LabelStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 717,
+// CHECK-NEXT: "line": 39,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 728,
+// CHECK-NEXT: "line": 40,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "label1",
+// CHECK-NEXT: "declId": "0x{{.*}}",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NullStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 728,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 728,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "GotoStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 735,
+// CHECK-NEXT: "line": 42,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 740,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "targetLabelDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "LabelStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 751,
+// CHECK-NEXT: "line": 44,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 762,
+// CHECK-NEXT: "line": 45,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "label2",
+// CHECK-NEXT: "declId": "0x{{.*}}",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 762,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 762,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 770,
+// CHECK-NEXT: "line": 47,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 790,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 776,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 770,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 784,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "ptr",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "AddrLabelExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 782,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 784,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "name": "label1",
+// CHECK-NEXT: "labelDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "PointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "void"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IndirectGotoStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 797,
+// CHECK-NEXT: "line": 49,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 803,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 803,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 803,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const void *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "NoOp",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 803,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 803,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 803,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 803,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "ptr",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "void"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 837,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 971,
+// CHECK-NEXT: "line": 64,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "SwitchStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 842,
+// CHECK-NEXT: "line": 53,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 968,
+// CHECK-NEXT: "line": 63,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 850,
+// CHECK-NEXT: "line": 53,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 850,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 850,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 850,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 853,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 968,
+// CHECK-NEXT: "line": 63,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CaseStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 858,
+// CHECK-NEXT: "line": 54,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 871,
+// CHECK-NEXT: "line": 55,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ConstantExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 863,
+// CHECK-NEXT: "line": 54,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 863,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 863,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 863,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BreakStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 871,
+// CHECK-NEXT: "line": 55,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 871,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CaseStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 881,
+// CHECK-NEXT: "line": 56,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 905,
+// CHECK-NEXT: "line": 58,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ConstantExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 886,
+// CHECK-NEXT: "line": 56,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 886,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 886,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 886,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "1"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CaseStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 892,
+// CHECK-NEXT: "line": 57,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 905,
+// CHECK-NEXT: "line": 58,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ConstantExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 897,
+// CHECK-NEXT: "line": 57,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 897,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 897,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 897,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "2"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BreakStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 905,
+// CHECK-NEXT: "line": 58,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 905,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DefaultStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 915,
+// CHECK-NEXT: "line": 59,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 7
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 929,
+// CHECK-NEXT: "line": 60,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BreakStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 929,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 929,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CaseStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 939,
+// CHECK-NEXT: "line": 61,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 958,
+// CHECK-NEXT: "line": 62,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isGNURange": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ConstantExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 944,
+// CHECK-NEXT: "line": 61,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 944,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 944,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 944,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "3"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ConstantExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 950,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 950,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 950,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 950,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "5"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BreakStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 958,
+// CHECK-NEXT: "line": 62,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 958,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 997,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1189,
+// CHECK-NEXT: "line": 91,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IfStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1002,
+// CHECK-NEXT: "line": 67,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1014,
+// CHECK-NEXT: "line": 68,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1006,
+// CHECK-NEXT: "line": 67,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1006,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1006,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1006,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NullStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1014,
+// CHECK-NEXT: "line": 68,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1014,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IfStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1021,
+// CHECK-NEXT: "line": 70,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1029,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1025,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1025,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1025,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1025,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1028,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1029,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IfStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1036,
+// CHECK-NEXT: "line": 72,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1063,
+// CHECK-NEXT: "line": 75,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasElse": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1040,
+// CHECK-NEXT: "line": 72,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1040,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1040,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1040,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NullStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1048,
+// CHECK-NEXT: "line": 73,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1048,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NullStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1063,
+// CHECK-NEXT: "line": 75,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1063,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IfStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1070,
+// CHECK-NEXT: "line": 77,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1089,
+// CHECK-NEXT: "line": 78,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasElse": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1074,
+// CHECK-NEXT: "line": 77,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1074,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1074,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1074,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1077,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1078,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1088,
+// CHECK-NEXT: "line": 78,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1089,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IfStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1096,
+// CHECK-NEXT: "line": 80,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1130,
+// CHECK-NEXT: "line": 83,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasElse": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1100,
+// CHECK-NEXT: "line": 80,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1100,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1100,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1100,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NullStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1108,
+// CHECK-NEXT: "line": 81,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1108,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IfStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1118,
+// CHECK-NEXT: "line": 82,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1130,
+// CHECK-NEXT: "line": 83,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1122,
+// CHECK-NEXT: "line": 82,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1122,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1122,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1122,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NullStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1130,
+// CHECK-NEXT: "line": 83,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1130,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IfStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1137,
+// CHECK-NEXT: "line": 85,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1186,
+// CHECK-NEXT: "line": 90,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasElse": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1141,
+// CHECK-NEXT: "line": 85,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1141,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1141,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1141,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NullStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1149,
+// CHECK-NEXT: "line": 86,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1149,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IfStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1159,
+// CHECK-NEXT: "line": 87,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1186,
+// CHECK-NEXT: "line": 90,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasElse": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1163,
+// CHECK-NEXT: "line": 87,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1163,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1163,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1163,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NullStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1171,
+// CHECK-NEXT: "line": 88,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1171,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NullStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1186,
+// CHECK-NEXT: "line": 90,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1186,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1222,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1443,
+// CHECK-NEXT: "line": 118,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "WhileStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1227,
+// CHECK-NEXT: "line": 94,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1242,
+// CHECK-NEXT: "line": 95,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1234,
+// CHECK-NEXT: "line": 94,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1234,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1234,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1234,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NullStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1242,
+// CHECK-NEXT: "line": 95,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1242,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DoStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1249,
+// CHECK-NEXT: "line": 97,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1270,
+// CHECK-NEXT: "line": 99,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NullStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1257,
+// CHECK-NEXT: "line": 98,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1257,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1269,
+// CHECK-NEXT: "line": 99,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1269,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1269,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1269,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ForStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1278,
+// CHECK-NEXT: "line": 101,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1312,
+// CHECK-NEXT: "line": 102,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1283,
+// CHECK-NEXT: "line": 101,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1292,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1287,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1283,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1291,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1291,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1291,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {},
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1294,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1298,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "<",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1294,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1294,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1294,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1294,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1298,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1298,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "10"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UnaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1302,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1304,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "isPostfix": false,
+// CHECK-NEXT: "opcode": "++",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1304,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1304,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NullStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1312,
+// CHECK-NEXT: "line": 102,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1312,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ForStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1319,
+// CHECK-NEXT: "line": 104,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1338,
+// CHECK-NEXT: "line": 105,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1324,
+// CHECK-NEXT: "line": 104,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1324,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1324,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1324,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {},
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1327,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1327,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1327,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1327,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1330,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1330,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1330,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1330,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NullStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1338,
+// CHECK-NEXT: "line": 105,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1338,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ForStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1345,
+// CHECK-NEXT: "line": 107,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1368,
+// CHECK-NEXT: "line": 108,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {},
+// CHECK-NEXT: {},
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1352,
+// CHECK-NEXT: "line": 107,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1352,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1352,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1352,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1355,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1360,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "=",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1355,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1355,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1359,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1360,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralToBoolean",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UnaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1359,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1360,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "isPostfix": false,
+// CHECK-NEXT: "opcode": "!",
+// CHECK-NEXT: "canOverflow": false,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1360,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1360,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1360,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1360,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NullStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1368,
+// CHECK-NEXT: "line": 108,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1368,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ForStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1375,
+// CHECK-NEXT: "line": 110,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1391,
+// CHECK-NEXT: "line": 111,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {},
+// CHECK-NEXT: {},
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1382,
+// CHECK-NEXT: "line": 110,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1382,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1382,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1382,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {},
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NullStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1391,
+// CHECK-NEXT: "line": 111,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1391,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ForStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1398,
+// CHECK-NEXT: "line": 113,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1419,
+// CHECK-NEXT: "line": 114,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {},
+// CHECK-NEXT: {},
+// CHECK-NEXT: {},
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1406,
+// CHECK-NEXT: "line": 113,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1411,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "=",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1406,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1406,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1410,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1411,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralToBoolean",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UnaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1410,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1411,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "isPostfix": false,
+// CHECK-NEXT: "opcode": "!",
+// CHECK-NEXT: "canOverflow": false,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1411,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1411,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1411,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1411,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "_Bool"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NullStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1419,
+// CHECK-NEXT: "line": 114,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1419,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ForStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1426,
+// CHECK-NEXT: "line": 116,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1440,
+// CHECK-NEXT: "line": 117,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {},
+// CHECK-NEXT: {},
+// CHECK-NEXT: {},
+// CHECK-NEXT: {},
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NullStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1440,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1440,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1469,
+// CHECK-NEXT: "line": 120,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1623,
+// CHECK-NEXT: "line": 130,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "WhileStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1540,
+// CHECK-NEXT: "line": 123,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1582,
+// CHECK-NEXT: "line": 126,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1547,
+// CHECK-NEXT: "line": 123,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1547,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "1"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1550,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1582,
+// CHECK-NEXT: "line": 126,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ContinueStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1557,
+// CHECK-NEXT: "line": 124,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1557,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BreakStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1572,
+// CHECK-NEXT: "line": 125,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1572,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ReturnStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1587,
+// CHECK-NEXT: "line": 127,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1587,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ReturnStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1600,
+// CHECK-NEXT: "line": 129,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1619,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CallExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1607,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1619,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1607,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1607,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (*)(int)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "FunctionToPointerDecay",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1607,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1607,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (int)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "name": "TestSwitch",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (int)"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (int)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1618,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1618,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "1"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1653,
+// CHECK-NEXT: "line": 132,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1679,
+// CHECK-NEXT: "line": 134,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "StmtExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1658,
+// CHECK-NEXT: "line": 133,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1675,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1659,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1674,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1660,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1670,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1664,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1660,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1668,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1668,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1668,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "10"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1672,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1672,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1672,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1672,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1711,
+// CHECK-NEXT: "line": 136,
+// CHECK-NEXT: "col": 28,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1811,
+// CHECK-NEXT: "line": 148,
+// CHECK-NEXT: "presumedLine": 200003,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1716,
+// CHECK-NEXT: "line": 137,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1721,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1720,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1716,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1720,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1762,
+// CHECK-NEXT: "line": 142,
+// CHECK-NEXT: "presumedLine": 100000,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1767,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1766,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1762,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1766,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "spellingLoc": {
+// CHECK-NEXT: "offset": 1792,
+// CHECK-NEXT: "line": 145,
+// CHECK-NEXT: "presumedLine": 200000,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "expansionLoc": {
+// CHECK-NEXT: "offset": 1788,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3,
+// CHECK-NEXT: "isMacroArgExpansion": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "spellingLoc": {
+// CHECK-NEXT: "offset": 1792,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "expansionLoc": {
+// CHECK-NEXT: "offset": 1788,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3,
+// CHECK-NEXT: "isMacroArgExpansion": true
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "1"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1836,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1857,
+// CHECK-NEXT: "line": 152,
+// CHECK-NEXT: "presumedLine": 200007,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1841,
+// CHECK-NEXT: "line": 151,
+// CHECK-NEXT: "presumedLine": 200006,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1854,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1848,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1841,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1853,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "vla",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "double[n]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VariableArrayType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "double[n]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isVariablyModified": true,
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "array"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "double"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "fpp"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1852,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1852,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1852,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1852,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "n",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
diff --git a/clang/test/AST/ast-dump-stmt-json.cpp b/clang/test/AST/ast-dump-stmt-json.cpp
index a473d17da9424..0452bca3430ab 100644
--- a/clang/test/AST/ast-dump-stmt-json.cpp
+++ b/clang/test/AST/ast-dump-stmt-json.cpp
@@ -1,7214 +1,8824 @@
-// RUN: %clang_cc1 -std=c++2a -triple x86_64-linux-gnu -fcxx-exceptions -ast-dump=json %s | FileCheck %s
-
-namespace n {
-void function() {}
-int Variable;
-}
-using n::function;
-using n::Variable;
-void TestFunction() {
- void (*f)() = &function;
- Variable = 4;
-}
-
-void TestCatch1() {
- try {
- }
- catch (int x) {
- }
-}
-
-void TestCatch2() {
- try {
- }
- catch (...) {
- }
-}
-
-void TestAllocationExprs() {
- int *p;
- p = new int;
- delete p;
- p = new int[2];
- delete[] p;
- p = ::new int;
- ::delete p;
-}
-
-// Don't crash on dependent exprs that haven't been resolved yet.
-template <typename T>
-void TestDependentAllocationExpr() {
- T *p = new T;
- delete p;
-}
-
-template <typename T>
-class DependentScopeMemberExprWrapper {
- T member;
-};
-
-template <typename T>
-void TestDependentScopeMemberExpr() {
- DependentScopeMemberExprWrapper<T> obj;
- obj.member = T();
- obj.member = T{};
- (&obj)->member = T();
-}
-
-template <typename T>
-class OtherDependentScopeMemberExprWrapper {
- template <typename U>
- static U member;
-};
-
-template <typename T>
-void TestDependentScopeTemplateMemberExpr() {
- OtherDependentScopeMemberExprWrapper<T> obj;
- obj.template member<int> = int();
-}
-
-union U {
- int i;
- long l;
-};
-
-void TestUnionInitList()
-{
- U us[3] = {1};
-}
-
-void TestSwitch(int i) {
- switch (int a; i)
- ;
-}
-
-void TestIf(bool b) {
- if (const int i = 12; i)
- ;
-
- if constexpr (sizeof(b) == 1)
- ;
-
- if constexpr (sizeof(b) == 1)
- ;
- else
- ;
-}
-
-struct Container {
- int *begin() const;
- int *end() const;
-};
-
-void TestIteration() {
- for (int i = 0; int j = i; ++i)
- ;
-
- int vals[10];
- for (int v : vals)
- ;
-
- Container C;
- for (int v : C)
- ;
-
- for (int a; int v : vals)
- ;
-}
-
-template <typename Ty>
-void TestDependentGenericSelectionExpr(Ty T) {
- _Generic(T, int : 1, default : 0);
- _Generic(T, default : 0);
-}
-
-// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
-// using --filters=FunctionDecl,FunctionTemplateDecl,UsingDecl,UsingShadowDecl
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 125,
-// CHECK-NEXT: "line": 4,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 120,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 137,
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "function",
-// CHECK-NEXT: "mangledName": "_ZN1n8functionEv",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 136,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 137,
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "UsingDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 164,
-// CHECK-NEXT: "line": 7,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 155,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 164,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "n::function"
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "UsingShadowDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 164,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 164,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 164,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "target": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "name": "function",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "UsingDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 183,
-// CHECK-NEXT: "line": 8,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 174,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 183,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "n::Variable"
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "UsingShadowDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 183,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 183,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 183,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "target": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "Variable",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 198,
-// CHECK-NEXT: "line": 9,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 12
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 193,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 258,
-// CHECK-NEXT: "line": 12,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestFunction",
-// CHECK-NEXT: "mangledName": "_Z12TestFunctionv",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 213,
-// CHECK-NEXT: "line": 9,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 258,
-// CHECK-NEXT: "line": 12,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 217,
-// CHECK-NEXT: "line": 10,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 240,
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 224,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 217,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 232,
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "f",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (*)()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 231,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 232,
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (*)()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "isPostfix": false,
-// CHECK-NEXT: "opcode": "&",
-// CHECK-NEXT: "canOverflow": false,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 232,
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 232,
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "name": "function",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "foundReferencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UsingShadowDecl",
-// CHECK-NEXT: "name": "function"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 244,
-// CHECK-NEXT: "line": 11,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 255,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "opcode": "=",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 244,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 244,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "Variable",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "foundReferencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UsingShadowDecl",
-// CHECK-NEXT: "name": "Variable"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 255,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 255,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "4"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 266,
-// CHECK-NEXT: "line": 14,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 261,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 315,
-// CHECK-NEXT: "line": 19,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestCatch1",
-// CHECK-NEXT: "mangledName": "_Z10TestCatch1v",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 279,
-// CHECK-NEXT: "line": 14,
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 315,
-// CHECK-NEXT: "line": 19,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXTryStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 283,
-// CHECK-NEXT: "line": 15,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 313,
-// CHECK-NEXT: "line": 18,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 287,
-// CHECK-NEXT: "line": 15,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 291,
-// CHECK-NEXT: "line": 16,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXCatchStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 295,
-// CHECK-NEXT: "line": 17,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 313,
-// CHECK-NEXT: "line": 18,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 306,
-// CHECK-NEXT: "line": 17,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 302,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 306,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 309,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 313,
-// CHECK-NEXT: "line": 18,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 323,
-// CHECK-NEXT: "line": 21,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 318,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 370,
-// CHECK-NEXT: "line": 26,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestCatch2",
-// CHECK-NEXT: "mangledName": "_Z10TestCatch2v",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 336,
-// CHECK-NEXT: "line": 21,
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 370,
-// CHECK-NEXT: "line": 26,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXTryStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 340,
-// CHECK-NEXT: "line": 22,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 368,
-// CHECK-NEXT: "line": 25,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 344,
-// CHECK-NEXT: "line": 22,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 348,
-// CHECK-NEXT: "line": 23,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXCatchStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 352,
-// CHECK-NEXT: "line": 24,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 368,
-// CHECK-NEXT: "line": 25,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x0"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 364,
-// CHECK-NEXT: "line": 24,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 368,
-// CHECK-NEXT: "line": 25,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 378,
-// CHECK-NEXT: "line": 28,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 373,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 502,
-// CHECK-NEXT: "line": 36,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestAllocationExprs",
-// CHECK-NEXT: "mangledName": "_Z19TestAllocationExprsv",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 400,
-// CHECK-NEXT: "line": 28,
-// CHECK-NEXT: "col": 28,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 502,
-// CHECK-NEXT: "line": 36,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 404,
-// CHECK-NEXT: "line": 29,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 410,
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 409,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 404,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 409,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "p",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 414,
-// CHECK-NEXT: "line": 30,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 422,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "opcode": "=",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 414,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 414,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "p",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXNewExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 418,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 422,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "operatorNewDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "name": "operator new",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *(unsigned long)"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXDeleteExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 429,
-// CHECK-NEXT: "line": 31,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 436,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "operatorDeleteDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "name": "operator delete",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (void *, unsigned long) noexcept"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 436,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 436,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 436,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 436,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "p",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 441,
-// CHECK-NEXT: "line": 32,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 454,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "opcode": "=",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 441,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 441,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "p",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXNewExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 445,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 454,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "isArray": true,
-// CHECK-NEXT: "operatorNewDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "name": "operator new[]",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *(unsigned long)"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 453,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 453,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned long"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralCast",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 453,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 453,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "2"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXDeleteExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 459,
-// CHECK-NEXT: "line": 33,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 468,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "isArray": true,
-// CHECK-NEXT: "isArrayAsWritten": true,
-// CHECK-NEXT: "operatorDeleteDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "name": "operator delete[]",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (void *) noexcept"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 468,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 468,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 468,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 468,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "p",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 473,
-// CHECK-NEXT: "line": 34,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 483,
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "opcode": "=",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 473,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 473,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "p",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXNewExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 477,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 483,
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "isGlobal": true,
-// CHECK-NEXT: "operatorNewDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "name": "operator new",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *(unsigned long)"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXDeleteExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 490,
-// CHECK-NEXT: "line": 35,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 499,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "isGlobal": true,
-// CHECK-NEXT: "operatorDeleteDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "name": "operator delete",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (void *, unsigned long) noexcept"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 499,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 499,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 499,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 499,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "p",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "operator new",
-// CHECK-NEXT: "mangledName": "_Znwm",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *(unsigned long)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned long"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VisibilityAttr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "implicit": true,
-// CHECK-NEXT: "visibility": "default"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ReturnsNonNullAttr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "implicit": true
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "AllocSizeAttr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "implicit": true
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "operator new",
-// CHECK-NEXT: "mangledName": "_ZnwmSt11align_val_t",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *(unsigned long, std::align_val_t)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned long"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "std::align_val_t"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VisibilityAttr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "implicit": true,
-// CHECK-NEXT: "visibility": "default"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ReturnsNonNullAttr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "implicit": true
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "AllocSizeAttr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "implicit": true
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "AllocAlignAttr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "implicit": true
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "operator new[]",
-// CHECK-NEXT: "mangledName": "_Znam",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *(unsigned long)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned long"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VisibilityAttr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "implicit": true,
-// CHECK-NEXT: "visibility": "default"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ReturnsNonNullAttr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "implicit": true
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "AllocSizeAttr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "implicit": true
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "operator new[]",
-// CHECK-NEXT: "mangledName": "_ZnamSt11align_val_t",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *(unsigned long, std::align_val_t)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned long"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "std::align_val_t"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VisibilityAttr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "implicit": true,
-// CHECK-NEXT: "visibility": "default"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ReturnsNonNullAttr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "implicit": true
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "AllocSizeAttr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "implicit": true
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "AllocAlignAttr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "implicit": true
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "operator delete",
-// CHECK-NEXT: "mangledName": "_ZdlPv",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (void *) noexcept"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VisibilityAttr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "implicit": true,
-// CHECK-NEXT: "visibility": "default"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "operator delete",
-// CHECK-NEXT: "mangledName": "_ZdlPvSt11align_val_t",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (void *, std::align_val_t) noexcept"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "std::align_val_t"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VisibilityAttr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "implicit": true,
-// CHECK-NEXT: "visibility": "default"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "operator delete",
-// CHECK-NEXT: "mangledName": "_ZdlPvm",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (void *, unsigned long) noexcept"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned long"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VisibilityAttr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "implicit": true,
-// CHECK-NEXT: "visibility": "default"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "operator delete",
-// CHECK-NEXT: "mangledName": "_ZdlPvmSt11align_val_t",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (void *, unsigned long, std::align_val_t) noexcept"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned long"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "std::align_val_t"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VisibilityAttr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "implicit": true,
-// CHECK-NEXT: "visibility": "default"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "operator delete[]",
-// CHECK-NEXT: "mangledName": "_ZdaPv",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (void *) noexcept"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VisibilityAttr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "implicit": true,
-// CHECK-NEXT: "visibility": "default"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "operator delete[]",
-// CHECK-NEXT: "mangledName": "_ZdaPvSt11align_val_t",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (void *, std::align_val_t) noexcept"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "std::align_val_t"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VisibilityAttr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "implicit": true,
-// CHECK-NEXT: "visibility": "default"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "operator delete[]",
-// CHECK-NEXT: "mangledName": "_ZdaPvm",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (void *, unsigned long) noexcept"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned long"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VisibilityAttr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "implicit": true,
-// CHECK-NEXT: "visibility": "default"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "operator delete[]",
-// CHECK-NEXT: "mangledName": "_ZdaPvmSt11align_val_t",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (void *, unsigned long, std::align_val_t) noexcept"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void *"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned long"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "std::align_val_t"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VisibilityAttr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "implicit": true,
-// CHECK-NEXT: "visibility": "default"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 598,
-// CHECK-NEXT: "line": 40,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 27
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 571,
-// CHECK-NEXT: "line": 39,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 658,
-// CHECK-NEXT: "line": 43,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestDependentAllocationExpr",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 590,
-// CHECK-NEXT: "line": 39,
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 581,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 590,
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "T",
-// CHECK-NEXT: "tagUsed": "typename",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 598,
-// CHECK-NEXT: "line": 40,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 27
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 593,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 658,
-// CHECK-NEXT: "line": 43,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestDependentAllocationExpr",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 628,
-// CHECK-NEXT: "line": 40,
-// CHECK-NEXT: "col": 36,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 658,
-// CHECK-NEXT: "line": 43,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 632,
-// CHECK-NEXT: "line": 41,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 644,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 635,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 632,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 643,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "p",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "T *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXNewExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 639,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 643,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "T *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXDeleteExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 648,
-// CHECK-NEXT: "line": 42,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 655,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 655,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 655,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "T *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "p",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "T *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 766,
-// CHECK-NEXT: "line": 51,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 28
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 739,
-// CHECK-NEXT: "line": 50,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 905,
-// CHECK-NEXT: "line": 56,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestDependentScopeMemberExpr",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 758,
-// CHECK-NEXT: "line": 50,
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 749,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 758,
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "T",
-// CHECK-NEXT: "tagUsed": "typename",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 766,
-// CHECK-NEXT: "line": 51,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 28
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 761,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 905,
-// CHECK-NEXT: "line": 56,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestDependentScopeMemberExpr",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 797,
-// CHECK-NEXT: "line": 51,
-// CHECK-NEXT: "col": 37,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 905,
-// CHECK-NEXT: "line": 56,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 801,
-// CHECK-NEXT: "line": 52,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 31
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 839,
-// CHECK-NEXT: "col": 41,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 836,
-// CHECK-NEXT: "col": 38,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 801,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 31
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 836,
-// CHECK-NEXT: "col": 38,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "obj",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "DependentScopeMemberExprWrapper<T>"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 843,
-// CHECK-NEXT: "line": 53,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 858,
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<dependent type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "=",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXDependentScopeMemberExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 843,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 847,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<dependent type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "isArrow": false,
-// CHECK-NEXT: "member": "member",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 843,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 843,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "DependentScopeMemberExprWrapper<T>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "obj",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "DependentScopeMemberExprWrapper<T>"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXUnresolvedConstructExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 856,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 858,
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "T"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 863,
-// CHECK-NEXT: "line": 54,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 878,
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<dependent type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "=",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXDependentScopeMemberExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 863,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 867,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<dependent type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "isArrow": false,
-// CHECK-NEXT: "member": "member",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 863,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 863,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "DependentScopeMemberExprWrapper<T>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "obj",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "DependentScopeMemberExprWrapper<T>"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXUnresolvedConstructExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 876,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 878,
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "T"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "list": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "InitListExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 877,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 878,
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 883,
-// CHECK-NEXT: "line": 55,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 902,
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<dependent type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "=",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXDependentScopeMemberExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 883,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 891,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<dependent type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "isArrow": true,
-// CHECK-NEXT: "member": "member",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParenExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 883,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 888,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<dependent type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 884,
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 885,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<dependent type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "isPostfix": false,
-// CHECK-NEXT: "opcode": "&",
-// CHECK-NEXT: "canOverflow": false,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 885,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 885,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "DependentScopeMemberExprWrapper<T>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "obj",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "DependentScopeMemberExprWrapper<T>"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXUnresolvedConstructExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 900,
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 902,
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "T"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1049,
-// CHECK-NEXT: "line": 65,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 36
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1022,
-// CHECK-NEXT: "line": 64,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1173,
-// CHECK-NEXT: "line": 68,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestDependentScopeTemplateMemberExpr",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1041,
-// CHECK-NEXT: "line": 64,
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1032,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1041,
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "T",
-// CHECK-NEXT: "tagUsed": "typename",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1049,
-// CHECK-NEXT: "line": 65,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 36
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1044,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1173,
-// CHECK-NEXT: "line": 68,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestDependentScopeTemplateMemberExpr",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1088,
-// CHECK-NEXT: "line": 65,
-// CHECK-NEXT: "col": 45,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1173,
-// CHECK-NEXT: "line": 68,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1092,
-// CHECK-NEXT: "line": 66,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 36
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1135,
-// CHECK-NEXT: "col": 46,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1132,
-// CHECK-NEXT: "col": 43,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1092,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 36
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1132,
-// CHECK-NEXT: "col": 43,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "obj",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "OtherDependentScopeMemberExprWrapper<T>"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1139,
-// CHECK-NEXT: "line": 67,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1170,
-// CHECK-NEXT: "col": 34,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<dependent type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "=",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXDependentScopeMemberExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1139,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1162,
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<dependent type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "isArrow": false,
-// CHECK-NEXT: "member": "member",
-// CHECK-NEXT: "hasTemplateKeyword": true,
-// CHECK-NEXT: "hasExplicitTemplateArgs": true,
-// CHECK-NEXT: "explicitTemplateArgs": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "kind": "TemplateArgument",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1159,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1159,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ],
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1139,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1139,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "OtherDependentScopeMemberExprWrapper<T>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "obj",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "OtherDependentScopeMemberExprWrapper<T>"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXScalarValueInitExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1166,
-// CHECK-NEXT: "col": 30,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1170,
-// CHECK-NEXT: "col": 34,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1214,
-// CHECK-NEXT: "line": 75,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 17
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1209,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1253,
-// CHECK-NEXT: "line": 78,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestUnionInitList",
-// CHECK-NEXT: "mangledName": "_Z17TestUnionInitListv",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1234,
-// CHECK-NEXT: "line": 76,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1253,
-// CHECK-NEXT: "line": 78,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1238,
-// CHECK-NEXT: "line": 77,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1251,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1240,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1238,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1250,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "us",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "U[3]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "InitListExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1248,
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1250,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "U[3]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "array_filler": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "InitListExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1250,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1250,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "U"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "field": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "InitListExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1249,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1249,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "U"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "field": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FieldDecl",
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1249,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1249,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "1"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1261,
-// CHECK-NEXT: "line": 80,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1256,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1307,
-// CHECK-NEXT: "line": 83,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestSwitch",
-// CHECK-NEXT: "mangledName": "_Z10TestSwitchi",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (int)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1276,
-// CHECK-NEXT: "line": 80,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1272,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1276,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1279,
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1307,
-// CHECK-NEXT: "line": 83,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "SwitchStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1283,
-// CHECK-NEXT: "line": 81,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1305,
-// CHECK-NEXT: "line": 82,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasInit": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1291,
-// CHECK-NEXT: "line": 81,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1296,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1295,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1291,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1295,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1298,
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1298,
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1298,
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1298,
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NullStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1305,
-// CHECK-NEXT: "line": 82,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1305,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1315,
-// CHECK-NEXT: "line": 85,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1310,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1456,
-// CHECK-NEXT: "line": 96,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestIf",
-// CHECK-NEXT: "mangledName": "_Z6TestIfb",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (bool)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1327,
-// CHECK-NEXT: "line": 85,
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1322,
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1327,
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1330,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1456,
-// CHECK-NEXT: "line": 96,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IfStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1334,
-// CHECK-NEXT: "line": 86,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1363,
-// CHECK-NEXT: "line": 87,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasInit": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1338,
-// CHECK-NEXT: "line": 86,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1354,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1348,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1338,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1352,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1352,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1352,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "12"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1356,
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1356,
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralToBoolean",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1356,
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1356,
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1356,
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1356,
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "nonOdrUseReason": "constant"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NullStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1363,
-// CHECK-NEXT: "line": 87,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1363,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IfStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1368,
-// CHECK-NEXT: "line": 89,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1402,
-// CHECK-NEXT: "line": 90,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ConstantExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1382,
-// CHECK-NEXT: "line": 89,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1395,
-// CHECK-NEXT: "col": 30,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "true",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1382,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1395,
-// CHECK-NEXT: "col": 30,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "==",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnaryExprOrTypeTraitExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1382,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1390,
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned long"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "name": "sizeof",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParenExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1388,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1390,
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1389,
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1389,
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "nonOdrUseReason": "unevaluated"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1395,
-// CHECK-NEXT: "col": 30,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1395,
-// CHECK-NEXT: "col": 30,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned long"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralCast",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1395,
-// CHECK-NEXT: "col": 30,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1395,
-// CHECK-NEXT: "col": 30,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "1"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NullStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1402,
-// CHECK-NEXT: "line": 90,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1402,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IfStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1407,
-// CHECK-NEXT: "line": 92,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1454,
-// CHECK-NEXT: "line": 95,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasElse": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ConstantExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1421,
-// CHECK-NEXT: "line": 92,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1434,
-// CHECK-NEXT: "col": 30,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "true",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1421,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1434,
-// CHECK-NEXT: "col": 30,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "==",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnaryExprOrTypeTraitExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1421,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1429,
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned long"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "name": "sizeof",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParenExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1427,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1429,
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1428,
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1428,
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "nonOdrUseReason": "unevaluated"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1434,
-// CHECK-NEXT: "col": 30,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1434,
-// CHECK-NEXT: "col": 30,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned long"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralCast",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1434,
-// CHECK-NEXT: "col": 30,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1434,
-// CHECK-NEXT: "col": 30,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "1"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NullStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1441,
-// CHECK-NEXT: "line": 93,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1441,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NullStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1454,
-// CHECK-NEXT: "line": 95,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1454,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1529,
-// CHECK-NEXT: "line": 103,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1524,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1706,
-// CHECK-NEXT: "line": 117,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestIteration",
-// CHECK-NEXT: "mangledName": "_Z13TestIterationv",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1545,
-// CHECK-NEXT: "line": 103,
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1706,
-// CHECK-NEXT: "line": 117,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ForStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1549,
-// CHECK-NEXT: "line": 104,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1585,
-// CHECK-NEXT: "line": 105,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1554,
-// CHECK-NEXT: "line": 104,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1563,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1558,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1554,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1562,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1562,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1562,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1565,
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1573,
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1569,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1565,
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1573,
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "j",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1573,
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1573,
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1573,
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1573,
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1569,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1569,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralToBoolean",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1569,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1569,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1569,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1569,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "j",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1576,
-// CHECK-NEXT: "col": 30,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1578,
-// CHECK-NEXT: "col": 32,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "isPostfix": false,
-// CHECK-NEXT: "opcode": "++",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1578,
-// CHECK-NEXT: "col": 32,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1578,
-// CHECK-NEXT: "col": 32,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NullStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1585,
-// CHECK-NEXT: "line": 105,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1585,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1590,
-// CHECK-NEXT: "line": 107,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1602,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1594,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1590,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1601,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "vals",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int[10]"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXForRangeStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1606,
-// CHECK-NEXT: "line": 108,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1629,
-// CHECK-NEXT: "line": 109,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {},
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1619,
-// CHECK-NEXT: "line": 108,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1619,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1619,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1619,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1619,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "__range1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int (&)[10]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1619,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1619,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int[10]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "vals",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int[10]"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "__begin1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "ArrayToPointerDecay",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int[10]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "__range1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int (&)[10]"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1619,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "__end1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1619,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "+",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "ArrayToPointerDecay",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int[10]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "__range1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int (&)[10]"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1619,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1619,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "long"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "10"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "!=",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "__begin1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "__end1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "isPostfix": false,
-// CHECK-NEXT: "opcode": "++",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "__begin1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1611,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1623,
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1615,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1611,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "v",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "isPostfix": false,
-// CHECK-NEXT: "opcode": "*",
-// CHECK-NEXT: "canOverflow": false,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1617,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "__begin1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NullStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1629,
-// CHECK-NEXT: "line": 109,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1629,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1634,
-// CHECK-NEXT: "line": 111,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 9
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1645,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1644,
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1634,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 9
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1644,
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "C",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Container"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "call",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXConstructExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1644,
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1644,
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Container"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "ctorType": {
-// CHECK-NEXT: "qualType": "void () noexcept"
-// CHECK-NEXT: },
-// CHECK-NEXT: "hadMultipleCandidates": true,
-// CHECK-NEXT: "constructionKind": "complete"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXForRangeStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1649,
-// CHECK-NEXT: "line": 112,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1669,
-// CHECK-NEXT: "line": 113,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {},
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1662,
-// CHECK-NEXT: "line": 112,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1662,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1662,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1662,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1662,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "__range1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Container &"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1662,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1662,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Container"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "C",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Container"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "__begin1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMemberCallExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "MemberExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<bound member function type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "name": "begin",
-// CHECK-NEXT: "isArrow": false,
-// CHECK-NEXT: "referencedMemberDecl": "0x{{.*}}",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const Container"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "castKind": "NoOp",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Container"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "__range1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Container &"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "__end1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMemberCallExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "MemberExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<bound member function type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "name": "end",
-// CHECK-NEXT: "isArrow": false,
-// CHECK-NEXT: "referencedMemberDecl": "0x{{.*}}",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const Container"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "castKind": "NoOp",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Container"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "__range1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Container &"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "!=",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "__begin1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "__end1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "isPostfix": false,
-// CHECK-NEXT: "opcode": "++",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "__begin1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1654,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1663,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1658,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1654,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "v",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "isPostfix": false,
-// CHECK-NEXT: "opcode": "*",
-// CHECK-NEXT: "canOverflow": false,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1660,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "__begin1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NullStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1669,
-// CHECK-NEXT: "line": 113,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1669,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXForRangeStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1674,
-// CHECK-NEXT: "line": 115,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1704,
-// CHECK-NEXT: "line": 116,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1679,
-// CHECK-NEXT: "line": 115,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1684,
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1683,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1679,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1683,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1694,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1694,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1694,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1694,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1694,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "__range1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int (&)[10]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1694,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1694,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int[10]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "vals",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int[10]"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "__begin1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "ArrayToPointerDecay",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int[10]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "__range1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int (&)[10]"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1694,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "__end1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1694,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "+",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "ArrayToPointerDecay",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int[10]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "__range1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int (&)[10]"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1694,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1694,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "long"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "10"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "!=",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "__begin1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "__end1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "isPostfix": false,
-// CHECK-NEXT: "opcode": "++",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "__begin1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1686,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1698,
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1690,
-// CHECK-NEXT: "col": 19,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1686,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "v",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "isPostfix": false,
-// CHECK-NEXT: "opcode": "*",
-// CHECK-NEXT: "canOverflow": false,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1692,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "__begin1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NullStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1704,
-// CHECK-NEXT: "line": 116,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1704,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1737,
-// CHECK-NEXT: "line": 120,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 33
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1709,
-// CHECK-NEXT: "line": 119,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1844,
-// CHECK-NEXT: "line": 123,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestDependentGenericSelectionExpr",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1728,
-// CHECK-NEXT: "line": 119,
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1719,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1728,
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "Ty",
-// CHECK-NEXT: "tagUsed": "typename",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1737,
-// CHECK-NEXT: "line": 120,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 33
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1732,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1844,
-// CHECK-NEXT: "line": 123,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestDependentGenericSelectionExpr",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (Ty)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1774,
-// CHECK-NEXT: "line": 120,
-// CHECK-NEXT: "col": 43,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1771,
-// CHECK-NEXT: "col": 40,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1774,
-// CHECK-NEXT: "col": 43,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "T",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Ty"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1777,
-// CHECK-NEXT: "col": 46,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1844,
-// CHECK-NEXT: "line": 123,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "GenericSelectionExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1781,
-// CHECK-NEXT: "line": 121,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1813,
-// CHECK-NEXT: "col": 35,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<dependent type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "resultDependent": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1790,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1790,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Ty"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "T",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Ty"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "nonOdrUseReason": "unevaluated"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Ty"
-// CHECK-NEXT: },
-// CHECK-NEXT: "isDependent": true,
-// CHECK-NEXT: "isInstantiationDependent": true,
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0,
-// CHECK-NEXT: "decl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "name": "Ty"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "associationKind": "case",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1799,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1799,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "1"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "associationKind": "default",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1812,
-// CHECK-NEXT: "col": 34,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1812,
-// CHECK-NEXT: "col": 34,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "GenericSelectionExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1818,
-// CHECK-NEXT: "line": 122,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1841,
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<dependent type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "resultDependent": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1827,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1827,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Ty"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "T",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Ty"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "nonOdrUseReason": "unevaluated"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Ty"
-// CHECK-NEXT: },
-// CHECK-NEXT: "isDependent": true,
-// CHECK-NEXT: "isInstantiationDependent": true,
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0,
-// CHECK-NEXT: "decl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "name": "Ty"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "associationKind": "default",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1840,
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1840,
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
+// RUN: %clang_cc1 -std=c++2a -triple x86_64-linux-gnu -fcxx-exceptions -ast-dump=json %s | FileCheck %s
+
+namespace n {
+void function() {}
+int Variable;
+}
+using n::function;
+using n::Variable;
+void TestFunction() {
+ void (*f)() = &function;
+ Variable = 4;
+}
+
+void TestCatch1() {
+ try {
+ }
+ catch (int x) {
+ }
+}
+
+void TestCatch2() {
+ try {
+ }
+ catch (...) {
+ }
+}
+
+void TestAllocationExprs() {
+ int *p;
+ p = new int;
+ delete p;
+ p = new int[2];
+ delete[] p;
+ p = ::new int;
+ ::delete p;
+}
+
+// Don't crash on dependent exprs that haven't been resolved yet.
+template <typename T>
+void TestDependentAllocationExpr() {
+ T *p = new T;
+ delete p;
+}
+
+template <typename T>
+class DependentScopeMemberExprWrapper {
+ T member;
+};
+
+template <typename T>
+void TestDependentScopeMemberExpr() {
+ DependentScopeMemberExprWrapper<T> obj;
+ obj.member = T();
+ obj.member = T{};
+ (&obj)->member = T();
+}
+
+template <typename T>
+class OtherDependentScopeMemberExprWrapper {
+ template <typename U>
+ static U member;
+};
+
+template <typename T>
+void TestDependentScopeTemplateMemberExpr() {
+ OtherDependentScopeMemberExprWrapper<T> obj;
+ obj.template member<int> = int();
+}
+
+union U {
+ int i;
+ long l;
+};
+
+void TestUnionInitList()
+{
+ U us[3] = {1};
+}
+
+void TestSwitch(int i) {
+ switch (int a; i)
+ ;
+}
+
+void TestIf(bool b) {
+ if (const int i = 12; i)
+ ;
+
+ if constexpr (sizeof(b) == 1)
+ ;
+
+ if constexpr (sizeof(b) == 1)
+ ;
+ else
+ ;
+}
+
+struct Container {
+ int *begin() const;
+ int *end() const;
+};
+
+void TestIteration() {
+ for (int i = 0; int j = i; ++i)
+ ;
+
+ int vals[10];
+ for (int v : vals)
+ ;
+
+ Container C;
+ for (int v : C)
+ ;
+
+ for (int a; int v : vals)
+ ;
+}
+
+template <typename Ty>
+void TestDependentGenericSelectionExpr(Ty T) {
+ _Generic(T, int : 1, default : 0);
+ _Generic(T, default : 0);
+}
+
+// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
+// using --filters=FunctionDecl,FunctionTemplateDecl,UsingDecl,UsingShadowDecl
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 128,
+// CHECK-NEXT: "line": 4,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 123,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 140,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "function",
+// CHECK-NEXT: "mangledName": "_ZN1n8functionEv",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 139,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 140,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "UsingDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 170,
+// CHECK-NEXT: "line": 7,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 161,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 170,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "n::function"
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "UsingShadowDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 170,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 170,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 170,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "target": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "name": "function",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "UsingDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 190,
+// CHECK-NEXT: "line": 8,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 181,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 190,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "n::Variable"
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "UsingShadowDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 190,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 190,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 190,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "target": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "Variable",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 206,
+// CHECK-NEXT: "line": 9,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 12
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 201,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 269,
+// CHECK-NEXT: "line": 12,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestFunction",
+// CHECK-NEXT: "mangledName": "_Z12TestFunctionv",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 221,
+// CHECK-NEXT: "line": 9,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 269,
+// CHECK-NEXT: "line": 12,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 226,
+// CHECK-NEXT: "line": 10,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 249,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 233,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 226,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 241,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "f",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (*)()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UnaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 240,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 241,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (*)()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "isPostfix": false,
+// CHECK-NEXT: "opcode": "&",
+// CHECK-NEXT: "canOverflow": false,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 241,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 241,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "name": "function",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "foundReferencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UsingShadowDecl",
+// CHECK-NEXT: "name": "function"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "PointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (*)()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr",
+// CHECK-NEXT: "func_ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParenType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "cc": "cdecl",
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "void"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "cc": "cdecl",
+// CHECK-NEXT: "returnTypeDetail": {
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "void"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 254,
+// CHECK-NEXT: "line": 11,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 265,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "opcode": "=",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 254,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 254,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "Variable",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "foundReferencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UsingShadowDecl",
+// CHECK-NEXT: "name": "Variable"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 265,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 265,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "4"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 279,
+// CHECK-NEXT: "line": 14,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 274,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 333,
+// CHECK-NEXT: "line": 19,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestCatch1",
+// CHECK-NEXT: "mangledName": "_Z10TestCatch1v",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 292,
+// CHECK-NEXT: "line": 14,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 333,
+// CHECK-NEXT: "line": 19,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXTryStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 297,
+// CHECK-NEXT: "line": 15,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 330,
+// CHECK-NEXT: "line": 18,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 301,
+// CHECK-NEXT: "line": 15,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 306,
+// CHECK-NEXT: "line": 16,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXCatchStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 311,
+// CHECK-NEXT: "line": 17,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 330,
+// CHECK-NEXT: "line": 18,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 322,
+// CHECK-NEXT: "line": 17,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 318,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 322,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 325,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 330,
+// CHECK-NEXT: "line": 18,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 343,
+// CHECK-NEXT: "line": 21,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 338,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 395,
+// CHECK-NEXT: "line": 26,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestCatch2",
+// CHECK-NEXT: "mangledName": "_Z10TestCatch2v",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 356,
+// CHECK-NEXT: "line": 21,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 395,
+// CHECK-NEXT: "line": 26,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXTryStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 361,
+// CHECK-NEXT: "line": 22,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 392,
+// CHECK-NEXT: "line": 25,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 365,
+// CHECK-NEXT: "line": 22,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 370,
+// CHECK-NEXT: "line": 23,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXCatchStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 375,
+// CHECK-NEXT: "line": 24,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 392,
+// CHECK-NEXT: "line": 25,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x0"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 387,
+// CHECK-NEXT: "line": 24,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 392,
+// CHECK-NEXT: "line": 25,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 405,
+// CHECK-NEXT: "line": 28,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 400,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 537,
+// CHECK-NEXT: "line": 36,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestAllocationExprs",
+// CHECK-NEXT: "mangledName": "_Z19TestAllocationExprsv",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 427,
+// CHECK-NEXT: "line": 28,
+// CHECK-NEXT: "col": 28,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 537,
+// CHECK-NEXT: "line": 36,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 432,
+// CHECK-NEXT: "line": 29,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 438,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 437,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 432,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 437,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "p",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "PointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 443,
+// CHECK-NEXT: "line": 30,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 451,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "opcode": "=",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 443,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 443,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "p",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXNewExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 447,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 451,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "operatorNewDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "name": "operator new",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *(unsigned long)"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXDeleteExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 459,
+// CHECK-NEXT: "line": 31,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 466,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "operatorDeleteDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "name": "operator delete",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (void *, unsigned long) noexcept"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 466,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 466,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 466,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 466,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "p",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 472,
+// CHECK-NEXT: "line": 32,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 485,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "opcode": "=",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 472,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 472,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "p",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXNewExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 476,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 485,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "isArray": true,
+// CHECK-NEXT: "operatorNewDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "name": "operator new[]",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *(unsigned long)"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 484,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 484,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned long"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralCast",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 484,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 484,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "2"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXDeleteExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 491,
+// CHECK-NEXT: "line": 33,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 500,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "isArray": true,
+// CHECK-NEXT: "isArrayAsWritten": true,
+// CHECK-NEXT: "operatorDeleteDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "name": "operator delete[]",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (void *) noexcept"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 500,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 500,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 500,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 500,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "p",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 506,
+// CHECK-NEXT: "line": 34,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 516,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "opcode": "=",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 506,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 506,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "p",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXNewExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 510,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 516,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "isGlobal": true,
+// CHECK-NEXT: "operatorNewDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "name": "operator new",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *(unsigned long)"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXDeleteExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 524,
+// CHECK-NEXT: "line": 35,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 533,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "isGlobal": true,
+// CHECK-NEXT: "operatorDeleteDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "name": "operator delete",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (void *, unsigned long) noexcept"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 533,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 533,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 533,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 533,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "p",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "operator new",
+// CHECK-NEXT: "mangledName": "_Znwm",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *(unsigned long)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned long"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned long"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VisibilityAttr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "implicit": true,
+// CHECK-NEXT: "visibility": "default"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ReturnsNonNullAttr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "implicit": true
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "AllocSizeAttr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "implicit": true
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "operator new",
+// CHECK-NEXT: "mangledName": "_ZnwmSt11align_val_t",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *(unsigned long, std::align_val_t)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned long"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "std::align_val_t"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "EnumType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "std::align_val_t"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "EnumDecl",
+// CHECK-NEXT: "name": "align_val_t"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "enum"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VisibilityAttr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "implicit": true,
+// CHECK-NEXT: "visibility": "default"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ReturnsNonNullAttr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "implicit": true
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "AllocSizeAttr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "implicit": true
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "AllocAlignAttr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "implicit": true
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "operator new[]",
+// CHECK-NEXT: "mangledName": "_Znam",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *(unsigned long)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned long"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VisibilityAttr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "implicit": true,
+// CHECK-NEXT: "visibility": "default"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ReturnsNonNullAttr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "implicit": true
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "AllocSizeAttr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "implicit": true
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "operator new[]",
+// CHECK-NEXT: "mangledName": "_ZnamSt11align_val_t",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *(unsigned long, std::align_val_t)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned long"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "std::align_val_t"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "EnumDecl",
+// CHECK-NEXT: "name": "align_val_t"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "enum"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VisibilityAttr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "implicit": true,
+// CHECK-NEXT: "visibility": "default"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ReturnsNonNullAttr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "implicit": true
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "AllocSizeAttr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "implicit": true
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "AllocAlignAttr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "implicit": true
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "operator delete",
+// CHECK-NEXT: "mangledName": "_ZdlPv",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (void *) noexcept"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "PointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "void"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VisibilityAttr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "implicit": true,
+// CHECK-NEXT: "visibility": "default"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "operator delete",
+// CHECK-NEXT: "mangledName": "_ZdlPvSt11align_val_t",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (void *, std::align_val_t) noexcept"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "void"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "std::align_val_t"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "EnumDecl",
+// CHECK-NEXT: "name": "align_val_t"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "enum"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VisibilityAttr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "implicit": true,
+// CHECK-NEXT: "visibility": "default"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "operator delete",
+// CHECK-NEXT: "mangledName": "_ZdlPvm",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (void *, unsigned long) noexcept"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "void"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned long"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VisibilityAttr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "implicit": true,
+// CHECK-NEXT: "visibility": "default"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "operator delete",
+// CHECK-NEXT: "mangledName": "_ZdlPvmSt11align_val_t",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (void *, unsigned long, std::align_val_t) noexcept"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "void"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned long"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "std::align_val_t"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "EnumDecl",
+// CHECK-NEXT: "name": "align_val_t"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "enum"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VisibilityAttr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "implicit": true,
+// CHECK-NEXT: "visibility": "default"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "operator delete[]",
+// CHECK-NEXT: "mangledName": "_ZdaPv",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (void *) noexcept"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "void"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VisibilityAttr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "implicit": true,
+// CHECK-NEXT: "visibility": "default"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "operator delete[]",
+// CHECK-NEXT: "mangledName": "_ZdaPvSt11align_val_t",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (void *, std::align_val_t) noexcept"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "void"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "std::align_val_t"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "EnumDecl",
+// CHECK-NEXT: "name": "align_val_t"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "enum"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VisibilityAttr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "implicit": true,
+// CHECK-NEXT: "visibility": "default"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "operator delete[]",
+// CHECK-NEXT: "mangledName": "_ZdaPvm",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (void *, unsigned long) noexcept"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "void"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned long"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VisibilityAttr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "implicit": true,
+// CHECK-NEXT: "visibility": "default"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "operator delete[]",
+// CHECK-NEXT: "mangledName": "_ZdaPvmSt11align_val_t",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (void *, unsigned long, std::align_val_t) noexcept"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "void"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned long"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "std::align_val_t"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "EnumDecl",
+// CHECK-NEXT: "name": "align_val_t"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "enum"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VisibilityAttr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "implicit": true,
+// CHECK-NEXT: "visibility": "default"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionTemplateDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 637,
+// CHECK-NEXT: "line": 40,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 27
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 609,
+// CHECK-NEXT: "line": 39,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 700,
+// CHECK-NEXT: "line": 43,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestDependentAllocationExpr",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 628,
+// CHECK-NEXT: "line": 39,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 619,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 628,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "T",
+// CHECK-NEXT: "tagUsed": "typename",
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 637,
+// CHECK-NEXT: "line": 40,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 27
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 632,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 700,
+// CHECK-NEXT: "line": 43,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestDependentAllocationExpr",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 667,
+// CHECK-NEXT: "line": 40,
+// CHECK-NEXT: "col": 36,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 700,
+// CHECK-NEXT: "line": 43,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 672,
+// CHECK-NEXT: "line": 41,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 684,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 675,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 672,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 683,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "p",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "T *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXNewExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 679,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 683,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "T *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "PointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "T *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isDependent": true,
+// CHECK-NEXT: "isInstantiationDependent": true,
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "T"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isDependent": true,
+// CHECK-NEXT: "isInstantiationDependent": true,
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0,
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "name": "T"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXDeleteExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 689,
+// CHECK-NEXT: "line": 42,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 696,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 696,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 696,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "T *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "p",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "T *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionTemplateDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 816,
+// CHECK-NEXT: "line": 51,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 28
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 788,
+// CHECK-NEXT: "line": 50,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 960,
+// CHECK-NEXT: "line": 56,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestDependentScopeMemberExpr",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 807,
+// CHECK-NEXT: "line": 50,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 798,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 807,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "T",
+// CHECK-NEXT: "tagUsed": "typename",
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 816,
+// CHECK-NEXT: "line": 51,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 28
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 811,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 960,
+// CHECK-NEXT: "line": 56,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestDependentScopeMemberExpr",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 847,
+// CHECK-NEXT: "line": 51,
+// CHECK-NEXT: "col": 37,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 960,
+// CHECK-NEXT: "line": 56,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 852,
+// CHECK-NEXT: "line": 52,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 31
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 890,
+// CHECK-NEXT: "col": 41,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 887,
+// CHECK-NEXT: "col": 38,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 852,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 31
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 887,
+// CHECK-NEXT: "col": 38,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "obj",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "DependentScopeMemberExprWrapper<T>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ElaboratedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "DependentScopeMemberExprWrapper<T>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isDependent": true,
+// CHECK-NEXT: "isInstantiationDependent": true,
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateSpecializationType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "DependentScopeMemberExprWrapper<T>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isDependent": true,
+// CHECK-NEXT: "isInstantiationDependent": true,
+// CHECK-NEXT: "templateName": "DependentScopeMemberExprWrapper",
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "kind": "TemplateArgument",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "T"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "T"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isDependent": true,
+// CHECK-NEXT: "isInstantiationDependent": true,
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0,
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "name": "T"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 895,
+// CHECK-NEXT: "line": 53,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 910,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<dependent type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "=",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXDependentScopeMemberExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 895,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 899,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<dependent type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "isArrow": false,
+// CHECK-NEXT: "member": "member",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 895,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 895,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "DependentScopeMemberExprWrapper<T>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "obj",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "DependentScopeMemberExprWrapper<T>"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXUnresolvedConstructExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 908,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 910,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "T"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 916,
+// CHECK-NEXT: "line": 54,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 931,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<dependent type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "=",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXDependentScopeMemberExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 916,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 920,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<dependent type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "isArrow": false,
+// CHECK-NEXT: "member": "member",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 916,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 916,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "DependentScopeMemberExprWrapper<T>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "obj",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "DependentScopeMemberExprWrapper<T>"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXUnresolvedConstructExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 929,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 931,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "T"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "list": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "InitListExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 930,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 931,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 937,
+// CHECK-NEXT: "line": 55,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 956,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<dependent type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "=",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXDependentScopeMemberExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 937,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 945,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<dependent type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "isArrow": true,
+// CHECK-NEXT: "member": "member",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParenExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 937,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 942,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<dependent type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UnaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 938,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 939,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<dependent type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "isPostfix": false,
+// CHECK-NEXT: "opcode": "&",
+// CHECK-NEXT: "canOverflow": false,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 939,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 939,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "DependentScopeMemberExprWrapper<T>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "obj",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "DependentScopeMemberExprWrapper<T>"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXUnresolvedConstructExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 954,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 956,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "T"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionTemplateDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1113,
+// CHECK-NEXT: "line": 65,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 36
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1085,
+// CHECK-NEXT: "line": 64,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1240,
+// CHECK-NEXT: "line": 68,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestDependentScopeTemplateMemberExpr",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1104,
+// CHECK-NEXT: "line": 64,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1095,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1104,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "T",
+// CHECK-NEXT: "tagUsed": "typename",
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1113,
+// CHECK-NEXT: "line": 65,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 36
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1108,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1240,
+// CHECK-NEXT: "line": 68,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestDependentScopeTemplateMemberExpr",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1152,
+// CHECK-NEXT: "line": 65,
+// CHECK-NEXT: "col": 45,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1240,
+// CHECK-NEXT: "line": 68,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1157,
+// CHECK-NEXT: "line": 66,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 36
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1200,
+// CHECK-NEXT: "col": 46,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1197,
+// CHECK-NEXT: "col": 43,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1157,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 36
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1197,
+// CHECK-NEXT: "col": 43,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "obj",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "OtherDependentScopeMemberExprWrapper<T>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ElaboratedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "OtherDependentScopeMemberExprWrapper<T>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isDependent": true,
+// CHECK-NEXT: "isInstantiationDependent": true,
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateSpecializationType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "OtherDependentScopeMemberExprWrapper<T>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isDependent": true,
+// CHECK-NEXT: "isInstantiationDependent": true,
+// CHECK-NEXT: "templateName": "OtherDependentScopeMemberExprWrapper",
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "kind": "TemplateArgument",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "T"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "T"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isDependent": true,
+// CHECK-NEXT: "isInstantiationDependent": true,
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0,
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "name": "T"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1205,
+// CHECK-NEXT: "line": 67,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1236,
+// CHECK-NEXT: "col": 34,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<dependent type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "=",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXDependentScopeMemberExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1205,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1228,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<dependent type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "isArrow": false,
+// CHECK-NEXT: "member": "member",
+// CHECK-NEXT: "hasTemplateKeyword": true,
+// CHECK-NEXT: "hasExplicitTemplateArgs": true,
+// CHECK-NEXT: "explicitTemplateArgs": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "kind": "TemplateArgument",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1225,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1225,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ],
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1205,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1205,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "OtherDependentScopeMemberExprWrapper<T>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "obj",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "OtherDependentScopeMemberExprWrapper<T>"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXScalarValueInitExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1232,
+// CHECK-NEXT: "col": 30,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1236,
+// CHECK-NEXT: "col": 34,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1288,
+// CHECK-NEXT: "line": 75,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 17
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1283,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1330,
+// CHECK-NEXT: "line": 78,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestUnionInitList",
+// CHECK-NEXT: "mangledName": "_Z17TestUnionInitListv",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1309,
+// CHECK-NEXT: "line": 76,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1330,
+// CHECK-NEXT: "line": 78,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1314,
+// CHECK-NEXT: "line": 77,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1327,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1316,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1314,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1326,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "us",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "U[3]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "InitListExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1324,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1326,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "U[3]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "array_filler": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "InitListExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1326,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1326,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "U"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "field": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "InitListExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1325,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1325,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "U"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "field": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FieldDecl",
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1325,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1325,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "1"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ConstantArrayType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "U[3]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "size": 3,
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "array"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "union"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "U"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "union"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1340,
+// CHECK-NEXT: "line": 80,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1335,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1389,
+// CHECK-NEXT: "line": 83,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestSwitch",
+// CHECK-NEXT: "mangledName": "_Z10TestSwitchi",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (int)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1355,
+// CHECK-NEXT: "line": 80,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1351,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1355,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1358,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1389,
+// CHECK-NEXT: "line": 83,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "SwitchStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1363,
+// CHECK-NEXT: "line": 81,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1386,
+// CHECK-NEXT: "line": 82,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasInit": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1371,
+// CHECK-NEXT: "line": 81,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1376,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1375,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1371,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1375,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1378,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1378,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1378,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1378,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NullStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1386,
+// CHECK-NEXT: "line": 82,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1386,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1399,
+// CHECK-NEXT: "line": 85,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1394,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1551,
+// CHECK-NEXT: "line": 96,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestIf",
+// CHECK-NEXT: "mangledName": "_Z6TestIfb",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (bool)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1411,
+// CHECK-NEXT: "line": 85,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1406,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1411,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1414,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1551,
+// CHECK-NEXT: "line": 96,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IfStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1419,
+// CHECK-NEXT: "line": 86,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1449,
+// CHECK-NEXT: "line": 87,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasInit": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1423,
+// CHECK-NEXT: "line": 86,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1439,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1433,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1423,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1437,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1437,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1437,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "12"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "const",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1441,
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1441,
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralToBoolean",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1441,
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1441,
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1441,
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1441,
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "nonOdrUseReason": "constant",
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NullStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1449,
+// CHECK-NEXT: "line": 87,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1449,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IfStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1456,
+// CHECK-NEXT: "line": 89,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1491,
+// CHECK-NEXT: "line": 90,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isConstexpr": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ConstantExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1470,
+// CHECK-NEXT: "line": 89,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1483,
+// CHECK-NEXT: "col": 30,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "true",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1470,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1483,
+// CHECK-NEXT: "col": 30,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "==",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UnaryExprOrTypeTraitExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1470,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1478,
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned long"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "name": "sizeof",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParenExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1476,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1478,
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1477,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1477,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "bool"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "nonOdrUseReason": "unevaluated",
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1483,
+// CHECK-NEXT: "col": 30,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1483,
+// CHECK-NEXT: "col": 30,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned long"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralCast",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1483,
+// CHECK-NEXT: "col": 30,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1483,
+// CHECK-NEXT: "col": 30,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "1"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NullStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1491,
+// CHECK-NEXT: "line": 90,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1491,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IfStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1498,
+// CHECK-NEXT: "line": 92,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1548,
+// CHECK-NEXT: "line": 95,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasElse": true,
+// CHECK-NEXT: "isConstexpr": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ConstantExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1512,
+// CHECK-NEXT: "line": 92,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1525,
+// CHECK-NEXT: "col": 30,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "true",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1512,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1525,
+// CHECK-NEXT: "col": 30,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "==",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UnaryExprOrTypeTraitExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1512,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1520,
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned long"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "name": "sizeof",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParenExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1518,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1520,
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1519,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1519,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "bool"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "nonOdrUseReason": "unevaluated",
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1525,
+// CHECK-NEXT: "col": 30,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1525,
+// CHECK-NEXT: "col": 30,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned long"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralCast",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1525,
+// CHECK-NEXT: "col": 30,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1525,
+// CHECK-NEXT: "col": 30,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "1"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NullStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1533,
+// CHECK-NEXT: "line": 93,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1533,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NullStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1548,
+// CHECK-NEXT: "line": 95,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1548,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1631,
+// CHECK-NEXT: "line": 103,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1626,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1822,
+// CHECK-NEXT: "line": 117,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestIteration",
+// CHECK-NEXT: "mangledName": "_Z13TestIterationv",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1647,
+// CHECK-NEXT: "line": 103,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1822,
+// CHECK-NEXT: "line": 117,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ForStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1652,
+// CHECK-NEXT: "line": 104,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1689,
+// CHECK-NEXT: "line": 105,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1657,
+// CHECK-NEXT: "line": 104,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1666,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1661,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1657,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1665,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1665,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1665,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1668,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1676,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1672,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1668,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1676,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "j",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1676,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1676,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1676,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1676,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1672,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1672,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralToBoolean",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1672,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1672,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1672,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1672,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "j",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UnaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1679,
+// CHECK-NEXT: "col": 30,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1681,
+// CHECK-NEXT: "col": 32,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "isPostfix": false,
+// CHECK-NEXT: "opcode": "++",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1681,
+// CHECK-NEXT: "col": 32,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1681,
+// CHECK-NEXT: "col": 32,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NullStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1689,
+// CHECK-NEXT: "line": 105,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1689,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1696,
+// CHECK-NEXT: "line": 107,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1708,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1700,
+// CHECK-NEXT: "col": 7,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1696,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1707,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "vals",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int[10]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ConstantArrayType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int[10]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "size": 10,
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "array"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXForRangeStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1713,
+// CHECK-NEXT: "line": 108,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1737,
+// CHECK-NEXT: "line": 109,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {},
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1726,
+// CHECK-NEXT: "line": 108,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1726,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1726,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1726,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1726,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "__range1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int (&)[10]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1726,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1726,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int[10]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "vals",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int[10]"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "array"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "LValueReferenceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int (&)[10]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "size": 10,
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "array"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "__begin1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "ArrayToPointerDecay",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int[10]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "__range1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int (&)[10]"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "array"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "AutoType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "undeduced": false,
+// CHECK-NEXT: "typeKeyword": "auto",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DecayedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "size": 10,
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "array"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1726,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "__end1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1726,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "+",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "ArrayToPointerDecay",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int[10]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "__range1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int (&)[10]"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "array"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1726,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1726,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "long"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "10"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "AutoType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "undeduced": false,
+// CHECK-NEXT: "typeKeyword": "auto",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "!=",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "__begin1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "__end1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UnaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "isPostfix": false,
+// CHECK-NEXT: "opcode": "++",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "__begin1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1718,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1730,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1722,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1718,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "v",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UnaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "isPostfix": false,
+// CHECK-NEXT: "opcode": "*",
+// CHECK-NEXT: "canOverflow": false,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1724,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "__begin1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NullStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1737,
+// CHECK-NEXT: "line": 109,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1737,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1744,
+// CHECK-NEXT: "line": 111,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 9
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1755,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1754,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1744,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 9
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1754,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "C",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Container"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "call",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXConstructExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1754,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1754,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Container"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "ctorType": {
+// CHECK-NEXT: "qualType": "void () noexcept"
+// CHECK-NEXT: },
+// CHECK-NEXT: "hadMultipleCandidates": true,
+// CHECK-NEXT: "constructionKind": "complete"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "Container"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXForRangeStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1760,
+// CHECK-NEXT: "line": 112,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1781,
+// CHECK-NEXT: "line": 113,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {},
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1773,
+// CHECK-NEXT: "line": 112,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1773,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1773,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1773,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1773,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "__range1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Container &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1773,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1773,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Container"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "C",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Container"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "LValueReferenceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Container &"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "Container"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "__begin1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMemberCallExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "MemberExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<bound member function type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "name": "begin",
+// CHECK-NEXT: "isArrow": false,
+// CHECK-NEXT: "referencedMemberDecl": "0x{{.*}}",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const Container"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "castKind": "NoOp",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Container"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "__range1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Container &"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "undeduced": false,
+// CHECK-NEXT: "typeKeyword": "auto",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "__end1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMemberCallExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "MemberExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<bound member function type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "name": "end",
+// CHECK-NEXT: "isArrow": false,
+// CHECK-NEXT: "referencedMemberDecl": "0x{{.*}}",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const Container"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "castKind": "NoOp",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Container"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "__range1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Container &"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "undeduced": false,
+// CHECK-NEXT: "typeKeyword": "auto",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "!=",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "__begin1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "__end1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UnaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "isPostfix": false,
+// CHECK-NEXT: "opcode": "++",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "__begin1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1765,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1774,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1769,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1765,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "v",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UnaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "isPostfix": false,
+// CHECK-NEXT: "opcode": "*",
+// CHECK-NEXT: "canOverflow": false,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1771,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "__begin1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NullStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1781,
+// CHECK-NEXT: "line": 113,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1781,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXForRangeStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1788,
+// CHECK-NEXT: "line": 115,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1819,
+// CHECK-NEXT: "line": 116,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1793,
+// CHECK-NEXT: "line": 115,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1798,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1797,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1793,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1797,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1808,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1808,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1808,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1808,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1808,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "__range1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int (&)[10]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1808,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1808,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int[10]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "vals",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int[10]"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "array"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "size": 10,
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "array"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "__begin1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "ArrayToPointerDecay",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int[10]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "__range1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int (&)[10]"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "array"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "undeduced": false,
+// CHECK-NEXT: "typeKeyword": "auto",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "size": 10,
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "array"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1808,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "__end1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1808,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "+",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "ArrayToPointerDecay",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int[10]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "__range1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int (&)[10]"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "array"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1808,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1808,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "long"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "10"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "undeduced": false,
+// CHECK-NEXT: "typeKeyword": "auto",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BinaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "opcode": "!=",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "__begin1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "__end1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UnaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "isPostfix": false,
+// CHECK-NEXT: "opcode": "++",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "__begin1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1800,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1812,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1804,
+// CHECK-NEXT: "col": 19,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1800,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "v",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UnaryOperator",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "isPostfix": false,
+// CHECK-NEXT: "opcode": "*",
+// CHECK-NEXT: "canOverflow": false,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1806,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "__begin1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int *"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NullStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1819,
+// CHECK-NEXT: "line": 116,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1819,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionTemplateDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1856,
+// CHECK-NEXT: "line": 120,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 33
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1827,
+// CHECK-NEXT: "line": 119,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1966,
+// CHECK-NEXT: "line": 123,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestDependentGenericSelectionExpr",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1846,
+// CHECK-NEXT: "line": 119,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1837,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1846,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "Ty",
+// CHECK-NEXT: "tagUsed": "typename",
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1856,
+// CHECK-NEXT: "line": 120,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 33
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1851,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1966,
+// CHECK-NEXT: "line": 123,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestDependentGenericSelectionExpr",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (Ty)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1893,
+// CHECK-NEXT: "line": 120,
+// CHECK-NEXT: "col": 43,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1890,
+// CHECK-NEXT: "col": 40,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1893,
+// CHECK-NEXT: "col": 43,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "T",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Ty"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Ty"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isDependent": true,
+// CHECK-NEXT: "isInstantiationDependent": true,
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0,
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "name": "Ty"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1896,
+// CHECK-NEXT: "col": 46,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1966,
+// CHECK-NEXT: "line": 123,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "GenericSelectionExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1901,
+// CHECK-NEXT: "line": 121,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1933,
+// CHECK-NEXT: "col": 35,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<dependent type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "resultDependent": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1910,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1910,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Ty"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "T",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Ty"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "nonOdrUseReason": "unevaluated",
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0,
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "name": "Ty"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "associationKind": "case",
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1919,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1919,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "1"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "associationKind": "default",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1932,
+// CHECK-NEXT: "col": 34,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1932,
+// CHECK-NEXT: "col": 34,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "GenericSelectionExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1939,
+// CHECK-NEXT: "line": 122,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1962,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<dependent type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "resultDependent": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1948,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1948,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Ty"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "T",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Ty"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "nonOdrUseReason": "unevaluated",
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0,
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "name": "Ty"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "associationKind": "default",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "IntegerLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1961,
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1961,
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "0"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
diff --git a/clang/test/AST/ast-dump-stmt-json.m b/clang/test/AST/ast-dump-stmt-json.m
index 096b9c3900d36..f3d7add4aafe3 100644
--- a/clang/test/AST/ast-dump-stmt-json.m
+++ b/clang/test/AST/ast-dump-stmt-json.m
@@ -1,773 +1,877 @@
-// RUN: %clang_cc1 -triple x86_64-pc-win32 -Wno-unused -fblocks -fobjc-exceptions -ast-dump=json -ast-dump-filter Test %s | FileCheck %s
-
-void TestBlockExpr(int x) {
- ^{ x; };
-}
-
-void TestExprWithCleanup(int x) {
- ^{ x; };
-}
-
- at interface A
- at end
-
-void TestObjCAtCatchStmt(void) {
- @try {
- } @catch(A *a) {
- } @catch(...) {
- } @finally {
- }
-}
-
-// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 3,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 5,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestBlockExpr",
-// CHECK-NEXT: "mangledName": "TestBlockExpr",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (int)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 3,
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 5,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ExprWithCleanups",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 4,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (^)(void)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "cleanupsHaveSideEffects": true,
-// CHECK-NEXT: "cleanups": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BlockDecl"
-// CHECK-NEXT: }
-// CHECK-NEXT: ],
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BlockExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (^)(void)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BlockDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "kind": "Capture",
-// CHECK-NEXT: "var": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 7,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 9,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestExprWithCleanup",
-// CHECK-NEXT: "mangledName": "TestExprWithCleanup",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (int)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 7,
-// CHECK-NEXT: "col": 30,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 30,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isUsed": true,
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 33,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 9,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ExprWithCleanups",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 8,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (^)(void)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "cleanupsHaveSideEffects": true,
-// CHECK-NEXT: "cleanups": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BlockDecl"
-// CHECK-NEXT: }
-// CHECK-NEXT: ],
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BlockExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (^)(void)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BlockDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "kind": "Capture",
-// CHECK-NEXT: "var": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 4,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 14,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 20,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestObjCAtCatchStmt",
-// CHECK-NEXT: "mangledName": "TestObjCAtCatchStmt",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (void)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 14,
-// CHECK-NEXT: "col": 32,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 20,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCAtTryStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 15,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 19,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 15,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 16,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCAtCatchStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 17,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 16,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "A *"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 17,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCAtCatchStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 18,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isCatchAll": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 17,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 18,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ObjCAtFinallyStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 19,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CapturedStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 18,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 19,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CapturedDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 18,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 19,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitParamDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 18,
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 14,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "__context",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "struct (unnamed at {{.*}}:18:14) *"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
+// RUN: %clang_cc1 -triple x86_64-pc-win32 -Wno-unused -fblocks -fobjc-exceptions -ast-dump=json -ast-dump-filter Test %s | FileCheck %s
+
+void TestBlockExpr(int x) {
+ ^{ x; };
+}
+
+void TestExprWithCleanup(int x) {
+ ^{ x; };
+}
+
+ at interface A
+ at end
+
+void TestObjCAtCatchStmt(void) {
+ @try {
+ } @catch(A *a) {
+ } @catch(...) {
+ } @finally {
+ }
+}
+
+// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 145,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 3,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 13
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 140,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 181,
+// CHECK-NEXT: "line": 5,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestBlockExpr",
+// CHECK-NEXT: "mangledName": "TestBlockExpr",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (int)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 163,
+// CHECK-NEXT: "line": 3,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 159,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 163,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 166,
+// CHECK-NEXT: "col": 27,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 181,
+// CHECK-NEXT: "line": 5,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ExprWithCleanups",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 171,
+// CHECK-NEXT: "line": 4,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 177,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (^)(void)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "cleanupsHaveSideEffects": true,
+// CHECK-NEXT: "cleanups": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BlockDecl"
+// CHECK-NEXT: }
+// CHECK-NEXT: ],
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BlockExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 171,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 177,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (^)(void)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BlockDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 171,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 171,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 177,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "kind": "Capture",
+// CHECK-NEXT: "var": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 172,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 177,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 174,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 174,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 174,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 174,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "const",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 191,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 7,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 186,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 233,
+// CHECK-NEXT: "line": 9,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestExprWithCleanup",
+// CHECK-NEXT: "mangledName": "TestExprWithCleanup",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (int)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 215,
+// CHECK-NEXT: "line": 7,
+// CHECK-NEXT: "col": 30,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 211,
+// CHECK-NEXT: "col": 26,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 215,
+// CHECK-NEXT: "col": 30,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isUsed": true,
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 218,
+// CHECK-NEXT: "col": 33,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 233,
+// CHECK-NEXT: "line": 9,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ExprWithCleanups",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 223,
+// CHECK-NEXT: "line": 8,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 229,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (^)(void)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "cleanupsHaveSideEffects": true,
+// CHECK-NEXT: "cleanups": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BlockDecl"
+// CHECK-NEXT: }
+// CHECK-NEXT: ],
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BlockExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 223,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 229,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (^)(void)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BlockDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 223,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 223,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 229,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "kind": "Capture",
+// CHECK-NEXT: "var": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 224,
+// CHECK-NEXT: "col": 4,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 229,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 226,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 226,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 226,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 226,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "const",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 265,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 14,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 260,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 364,
+// CHECK-NEXT: "line": 20,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestObjCAtCatchStmt",
+// CHECK-NEXT: "mangledName": "TestObjCAtCatchStmt",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (void)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 291,
+// CHECK-NEXT: "line": 14,
+// CHECK-NEXT: "col": 32,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 364,
+// CHECK-NEXT: "line": 20,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCAtTryStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 296,
+// CHECK-NEXT: "line": 15,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 361,
+// CHECK-NEXT: "line": 19,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 301,
+// CHECK-NEXT: "line": 15,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 306,
+// CHECK-NEXT: "line": 16,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCAtCatchStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 308,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 326,
+// CHECK-NEXT: "line": 17,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 318,
+// CHECK-NEXT: "line": 16,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 315,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 318,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "A *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCObjectPointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "A *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCInterfaceType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "A"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCInterfaceDecl",
+// CHECK-NEXT: "name": "A"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 321,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 326,
+// CHECK-NEXT: "line": 17,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCAtCatchStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 328,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 345,
+// CHECK-NEXT: "line": 18,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isCatchAll": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 340,
+// CHECK-NEXT: "line": 17,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 345,
+// CHECK-NEXT: "line": 18,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ObjCAtFinallyStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 347,
+// CHECK-NEXT: "col": 5,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 361,
+// CHECK-NEXT: "line": 19,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CapturedStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 356,
+// CHECK-NEXT: "line": 18,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 361,
+// CHECK-NEXT: "line": 19,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CapturedDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 356,
+// CHECK-NEXT: "line": 18,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 361,
+// CHECK-NEXT: "line": 19,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitParamDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 356,
+// CHECK-NEXT: "line": 18,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 356,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 356,
+// CHECK-NEXT: "col": 14,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "__context",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "struct (unnamed at {{.*}}:18:14) *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "PointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "struct (unnamed at {{.*}}:18:14) *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "struct (unnamed at {{.*}}:18:14)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordDecl",
+// CHECK-NEXT: "name": ""
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
diff --git a/clang/test/AST/ast-dump-stmt.c b/clang/test/AST/ast-dump-stmt.c
index 5c44fea2df6e7..c11f89a50b3ad 100644
--- a/clang/test/AST/ast-dump-stmt.c
+++ b/clang/test/AST/ast-dump-stmt.c
@@ -11,36 +11,43 @@
int TestLocation = 0;
// CHECK: VarDecl{{.*}}TestLocation
// CHECK-NEXT: IntegerLiteral 0x{{[^ ]*}} <col:20> 'int' 0
+// CHECK-NEXT: typeDetails: BuiltinType 0x{{[^ ]*}} 'int'
int TestIndent = 1 + (1);
-// CHECK: VarDecl{{.*}}TestIndent
-// CHECK-NEXT: {{^}}| `-BinaryOperator{{[^()]*$}}
-// CHECK-NEXT: {{^}}| |-IntegerLiteral{{.*0[^()]*$}}
-// CHECK-NEXT: {{^}}| `-ParenExpr{{.*0[^()]*$}}
-// CHECK-NEXT: {{^}}| `-IntegerLiteral{{.*0[^()]*$}}
+// CHECK: |-VarDecl {{.*}} TestIndent 'int' cinit
+// CHECK: | |-BinaryOperator {{.*}} 'int' '+'
+// CHECK: | | |-IntegerLiteral {{.*}} 'int' 1
+// CHECK: | | `-ParenExpr {{.*}} 'int'
+// CHECK: | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK: | `-typeDetails: BuiltinType {{.*}} 'int'
void TestDeclStmt(void) {
int x = 0;
int y, z;
}
-// CHECK: FunctionDecl{{.*}}TestDeclStmt
-// CHECK-NEXT: CompoundStmt
-// CHECK-NEXT: DeclStmt
-// CHECK-NEXT: VarDecl{{.*}}x
-// CHECK-NEXT: IntegerLiteral
-// CHECK-NEXT: DeclStmt
-// CHECK-NEXT: VarDecl{{.*}}y
-// CHECK-NEXT: VarDecl{{.*}}z
+
+// CHECK: |-FunctionDecl {{.*}} TestDeclStmt 'void (void)'
+// CHECK: | `-CompoundStmt {{.*}}
+// CHECK: | |-DeclStmt {{.*}}
+// CHECK: | | `-VarDecl {{.*}} x 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK: | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK: | `-DeclStmt {{.*}}
+// CHECK: | |-VarDecl {{.*}} y 'int'
+// CHECK: | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK: | `-VarDecl {{.*}} z 'int'
+// CHECK: | `-typeDetails: BuiltinType {{.*}} 'int'
int TestOpaqueValueExpr = 0 ?: 1;
-// CHECK: VarDecl{{.*}}TestOpaqueValueExpr
-// CHECK-NEXT: BinaryConditionalOperator
-// CHECK-NEXT: IntegerLiteral
-// CHECK-NEXT: OpaqueValueExpr
-// CHECK-NEXT: IntegerLiteral
-// CHECK-NEXT: OpaqueValueExpr
-// CHECK-NEXT: IntegerLiteral
-// CHECK-NEXT: IntegerLiteral
+// CHECK: |-VarDecl {{.*}} TestOpaqueValueExpr 'int' cinit
+// CHECK: | |-BinaryConditionalOperator {{.*}} 'int'
+// CHECK: | | |-IntegerLiteral {{.*}} 'int' 0
+// CHECK: | | |-OpaqueValueExpr {{.*}} 'int'
+// CHECK: | | | `-IntegerLiteral {{.*}} 'int' 0
+// CHECK: | | |-OpaqueValueExpr {{.*}} 'int'
+// CHECK: | | | `-IntegerLiteral {{.*}} 'int' 0
+// CHECK: | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK: | `-typeDetails: BuiltinType {{.*}} 'int'
void TestUnaryOperatorExpr(void) {
char T1 = 1;
@@ -48,32 +55,44 @@ void TestUnaryOperatorExpr(void) {
T1++;
T2++;
- // CHECK: UnaryOperator{{.*}}postfix '++' cannot overflow
- // CHECK-NEXT: DeclRefExpr{{.*}}'T1' 'char'
- // CHECK-NOT: UnaryOperator{{.*}}postfix '++' cannot overflow
- // CHECK: DeclRefExpr{{.*}}'T2' 'int'
-T1;
-T2;
- // CHECK: UnaryOperator{{.*}}prefix '-' cannot overflow
- // CHECK-NEXT: ImplicitCastExpr
- // CHECK-NEXT: ImplicitCastExpr
- // CHECK-NEXT: DeclRefExpr{{.*}}'T1' 'char'
- // CHECK-NOT: UnaryOperator{{.*}}prefix '-' cannot overflow
- // CHECK: ImplicitCastExpr
- // CHECK: DeclRefExpr{{.*}}'T2' 'int'
~T1;
~T2;
- // CHECK: UnaryOperator{{.*}}prefix '~' cannot overflow
- // CHECK-NEXT: ImplicitCastExpr
- // CHECK-NEXT: ImplicitCastExpr
- // CHECK-NEXT: DeclRefExpr{{.*}}'T1' 'char'
- // CHECK: UnaryOperator{{.*}}prefix '~' cannot overflow
- // CHECK-NEXT: ImplicitCastExpr
- // CHECK-NEXT: DeclRefExpr{{.*}}'T2' 'int'
}
+// CHECK: |-FunctionDecl {{.*}} TestUnaryOperatorExpr 'void (void)'
+// CHECK: | `-CompoundStmt {{.*}}
+// CHECK: | |-DeclStmt {{.*}}
+// CHECK: | | `-VarDecl {{.*}} used T1 'char' cinit
+// CHECK: | | |-ImplicitCastExpr {{.*}} 'char' <IntegralCast>
+// CHECK: | | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK: | | `-typeDetails: BuiltinType {{.*}} 'char'
+// CHECK: | |-DeclStmt {{.*}}
+// CHECK: | | `-VarDecl {{.*}} used T2 'int' cinit
+// CHECK: | | |-IntegerLiteral {{.*}} <col:12> 'int' 1
+// CHECK: | | `-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK: | |-UnaryOperator {{.*}} 'char' postfix '++' cannot overflow
+// CHECK: | | `-DeclRefExpr {{.*}} 'char' lvalue Var {{.*}} 'T1' 'char'
+// CHECK: | |-UnaryOperator {{.*}} 'int' postfix '++'
+// CHECK: | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'T2' 'int'
+// CHECK: | |-UnaryOperator {{.*}} 'int' prefix '-' cannot overflow
+// CHECK: | | `-ImplicitCastExpr {{.*}} 'int' <IntegralCast>
+// CHECK: | | `-ImplicitCastExpr {{.*}} 'char' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr {{.*}} 'char' lvalue Var {{.*}} 'T1' 'char'
+// CHECK: | |-UnaryOperator {{.*}} 'int' prefix '-'
+// CHECK: | | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'T2' 'int'
+// CHECK: | |-UnaryOperator {{.*}} 'int' prefix '~' cannot overflow
+// CHECK: | | `-ImplicitCastExpr {{.*}} 'int' <IntegralCast>
+// CHECK: | | `-ImplicitCastExpr {{.*}} 'char' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr {{.*}} 'char' lvalue Var {{.*}} 'T1' 'char'
+// CHECK: | `-UnaryOperator {{.*}} 'int' prefix '~' cannot overflow
+// CHECK: | `-ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
+// CHECK: | `-DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'T2' 'int'
+
void TestGenericSelectionExpressions(int i) {
_Generic(i, int : 12);
// CHECK: GenericSelectionExpr 0x{{[^ ]*}} <line:[[@LINE-1]]:3, col:23> 'int'
@@ -155,6 +174,8 @@ void TestLabelsAndGoto(void) {
// CHECK-NEXT: DeclStmt
// CHECK-NEXT: VarDecl
// CHECK-NEXT: AddrLabelExpr 0x{{[^ ]*}} <col:15, col:17> 'void *' label1 0x{{[^ ]*}}
+ // CHECK-NEXT: typeDetails: PointerType 0x{{[^ ]*}} 'void *'
+ // CHECK-NEXT: typeDetails: BuiltinType 0x{{[^ ]*}} 'void'
goto *ptr;
// CHECK-NEXT: IndirectGotoStmt 0x{{[^ ]*}} <line:[[@LINE-1]]:3, col:9>
@@ -303,6 +324,7 @@ void TestIteration(_Bool b) {
// CHECK-NEXT: DeclStmt
// CHECK-NEXT: VarDecl 0x{{[^ ]*}} <col:8, col:16> col:12 used i 'int' cinit
// CHECK-NEXT: IntegerLiteral 0x{{[^ ]*}} <col:16> 'int' 0
+ // CHECK-NEXT: typeDetails: BuiltinType 0x{{[^ ]*}} 'int'
// CHECK-NEXT: <<<NULL>>>
// CHECK-NEXT: BinaryOperator 0x{{[^ ]*}} <col:19, col:23> 'int' '<'
// CHECK-NEXT: ImplicitCastExpr
@@ -397,15 +419,15 @@ void TestMiscStmts(void) {
// CHECK-NEXT: DeclStmt
// CHECK-NEXT: VarDecl 0x{{[^ ]*}} <col:5, col:13> col:9 used a 'int' cinit
// CHECK-NEXT: IntegerLiteral 0x{{[^ ]*}} <col:13> 'int' 10
- // CHECK-NEXT: ImplicitCastExpr
- // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:17> 'int' lvalue Var 0x{{[^ ]*}} 'a' 'int'
+ // CHECK: ImplicitCastExpr 0x{{[^ ]*}}
+ // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:17> 'int' lvalue Var 0x{{[^ ]*}} 'a' 'int'
({int a = 10; a;;; });
// CHECK-NEXT: StmtExpr 0x{{[^ ]*}} <line:[[@LINE-1]]:3, col:23> 'int'
// CHECK-NEXT: CompoundStmt
// CHECK-NEXT: DeclStmt
// CHECK-NEXT: VarDecl 0x{{[^ ]*}} <col:5, col:13> col:9 used a 'int' cinit
// CHECK-NEXT: IntegerLiteral 0x{{[^ ]*}} <col:13> 'int' 10
- // CHECK-NEXT: ImplicitCastExpr
+ // CHECK: ImplicitCastExpr
// CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:17> 'int' lvalue Var 0x{{[^ ]*}} 'a' 'int'
// CHECK-NEXT: NullStmt
// CHECK-NEXT: NullStmt
diff --git a/clang/test/AST/ast-dump-stmt.cpp b/clang/test/AST/ast-dump-stmt.cpp
index 407584e5b82de..a4f9356e2a019 100644
--- a/clang/test/AST/ast-dump-stmt.cpp
+++ b/clang/test/AST/ast-dump-stmt.cpp
@@ -29,7 +29,7 @@ void TestCatch1() {
}
// CHECK-NEXT: CXXCatchStmt
// CHECK-NEXT: VarDecl {{.*}} x
-// CHECK-NEXT: CompoundStmt
+// CHECK: CompoundStmt
catch (int x) {
}
}
@@ -98,7 +98,7 @@ void TestUnionInitList()
{
U us[3] = {1};
// CHECK: VarDecl {{.+}} <col:3, col:15> col:5 us 'U[3]' cinit
-// CHECK-NEXT: `-InitListExpr {{.+}} <col:13, col:15> 'U[3]'
+// CHECK-NEXT: |-InitListExpr {{.+}} <col:13, col:15> 'U[3]'
// CHECK-NEXT: |-array_filler: InitListExpr {{.+}} <col:15> 'U' field Field {{.+}} 'i' 'int'
// CHECK-NEXT: `-InitListExpr {{.+}} <col:14> 'U' field Field {{.+}} 'i' 'int'
// CHECK-NEXT: `-IntegerLiteral {{.+}} <col:14> 'int' 1
@@ -110,9 +110,9 @@ void TestSwitch(int i) {
// CHECK: SwitchStmt 0x{{[^ ]*}} <line:[[@LINE-2]]:3, line:[[@LINE-1]]:5> has_init
// CHECK-NEXT: DeclStmt
// CHECK-NEXT: VarDecl 0x{{[^ ]*}} <col:11, col:15> col:15 a 'int'
- // CHECK-NEXT: ImplicitCastExpr
- // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:18> 'int' lvalue ParmVar 0x{{[^ ]*}} 'i' 'int'
- // CHECK-NEXT: NullStmt
+ // CHECK: ImplicitCastExpr
+ // CHECK: DeclRefExpr 0x{{[^ ]*}} <col:18> 'int' lvalue ParmVar 0x{{[^ ]*}} 'i' 'int'
+ // CHECK: NullStmt
}
void TestIf(bool b) {
@@ -122,9 +122,9 @@ void TestIf(bool b) {
// CHECK-NEXT: DeclStmt
// CHECK-NEXT: VarDecl 0x{{[^ ]*}} <col:7, col:15> col:11 i 'int' cinit
// CHECK-NEXT: IntegerLiteral 0x{{[^ ]*}} <col:15> 'int' 12
- // CHECK-NEXT: ImplicitCastExpr
- // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:19> 'bool' lvalue ParmVar 0x{{[^ ]*}} 'b' 'bool'
- // CHECK-NEXT: NullStmt
+ // CHECK: ImplicitCastExpr
+ // CHECK: DeclRefExpr 0x{{[^ ]*}} <col:19> 'bool' lvalue ParmVar 0x{{[^ ]*}} 'b' 'bool'
+ // CHECK: NullStmt
if constexpr (sizeof(b) == 1)
;
@@ -178,16 +178,16 @@ void TestIteration() {
// CHECK-NEXT: DeclStmt
// CHECK-NEXT: VarDecl 0x{{[^ ]*}} <col:8, col:16> col:12 used i 'int' cinit
// CHECK-NEXT: IntegerLiteral 0x{{[^ ]*}} <col:16> 'int' 0
- // CHECK-NEXT: DeclStmt
- // CHECK-NEXT: VarDecl 0x{{[^ ]*}} <col:19, col:27> col:23 used j 'int' cinit
- // CHECK-NEXT: ImplicitCastExpr
- // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:27> 'int' lvalue Var 0x{{[^ ]*}} 'i' 'int'
- // CHECK-NEXT: ImplicitCastExpr 0x{{[^ ]*}} <col:23> 'bool' <IntegralToBoolean>
- // CHECK-NEXT: ImplicitCastExpr 0x{{[^ ]*}} <col:23> 'int' <LValueToRValue>
- // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:23> 'int' lvalue Var 0x{{[^ ]*}} 'j' 'int'
- // CHECK-NEXT: UnaryOperator 0x{{[^ ]*}} <col:30, col:32> 'int' lvalue prefix '++'
- // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:32> 'int' lvalue Var 0x{{[^ ]*}} 'i' 'int'
- // CHECK-NEXT: NullStmt
+ // CHECK: DeclStmt
+ // CHECK: VarDecl 0x{{[^ ]*}} <col:19, col:27> col:23 used j 'int' cinit
+ // CHECK: ImplicitCastExpr
+ // CHECK: DeclRefExpr 0x{{[^ ]*}} <col:27> 'int' lvalue Var 0x{{[^ ]*}} 'i' 'int'
+ // CHECK: ImplicitCastExpr 0x{{[^ ]*}} <col:23> 'bool' <IntegralToBoolean>
+ // CHECK: ImplicitCastExpr 0x{{[^ ]*}} <col:23> 'int' <LValueToRValue>
+ // CHECK: DeclRefExpr 0x{{[^ ]*}} <col:23> 'int' lvalue Var 0x{{[^ ]*}} 'j' 'int'
+ // CHECK: UnaryOperator 0x{{[^ ]*}} <col:30, col:32> 'int' lvalue prefix '++'
+ // CHECK: DeclRefExpr 0x{{[^ ]*}} <col:32> 'int' lvalue Var 0x{{[^ ]*}} 'i' 'int'
+ // CHECK: NullStmt
int vals[10];
for (int v : vals)
@@ -197,30 +197,30 @@ void TestIteration() {
// CHECK-NEXT: DeclStmt
// CHECK-NEXT: VarDecl 0x{{[^ ]*}} <col:16> col:16 implicit used __range1 'int (&)[10]' cinit
// CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:16> 'int[10]' lvalue Var 0x{{[^ ]*}} 'vals' 'int[10]'
- // CHECK-NEXT: DeclStmt
- // CHECK-NEXT: VarDecl 0x{{[^ ]*}} <col:14> col:14 implicit used __begin1 'int *' cinit
- // CHECK-NEXT: ImplicitCastExpr
- // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:14> 'int[10]' lvalue Var 0x{{[^ ]*}} '__range1' 'int (&)[10]'
- // CHECK-NEXT: DeclStmt
- // CHECK-NEXT: VarDecl 0x{{[^ ]*}} <col:14, col:16> col:14 implicit used __end1 'int *' cinit
- // CHECK-NEXT: BinaryOperator 0x{{[^ ]*}} <col:14, col:16> 'int *' '+'
- // CHECK-NEXT: ImplicitCastExpr
- // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:14> 'int[10]' lvalue Var 0x{{[^ ]*}} '__range1' 'int (&)[10]'
- // CHECK-NEXT: IntegerLiteral 0x{{[^ ]*}} <col:16> 'long' 10
- // CHECK-NEXT: BinaryOperator 0x{{[^ ]*}} <col:14> 'bool' '!='
- // CHECK-NEXT: ImplicitCastExpr
- // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:14> 'int *' lvalue Var 0x{{[^ ]*}} '__begin1' 'int *'
- // CHECK-NEXT: ImplicitCastExpr
- // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:14> 'int *' lvalue Var 0x{{[^ ]*}} '__end1' 'int *'
- // CHECK-NEXT: UnaryOperator 0x{{[^ ]*}} <col:14> 'int *' lvalue prefix '++'
- // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:14> 'int *' lvalue Var 0x{{[^ ]*}} '__begin1' 'int *'
- // CHECK-NEXT: DeclStmt
- // CHECK-NEXT: VarDecl 0x{{[^ ]*}} <col:8, col:14> col:12 v 'int' cinit
- // CHECK-NEXT: ImplicitCastExpr
- // CHECK-NEXT: UnaryOperator 0x{{[^ ]*}} <col:14> 'int' lvalue prefix '*' cannot overflow
- // CHECK-NEXT: ImplicitCastExpr
- // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:14> 'int *' lvalue Var 0x{{[^ ]*}} '__begin1' 'int *'
- // CHECK-NEXT: NullStmt
+ // CHECK: DeclStmt
+ // CHECK: VarDecl 0x{{[^ ]*}} <col:14> col:14 implicit used __begin1 'int *' cinit
+ // CHECK: ImplicitCastExpr
+ // CHECK: DeclRefExpr 0x{{[^ ]*}} <col:14> 'int[10]' lvalue Var 0x{{[^ ]*}} '__range1' 'int (&)[10]'
+ // CHECK: DeclStmt
+ // CHECK: VarDecl 0x{{[^ ]*}} <col:14, col:16> col:14 implicit used __end1 'int *' cinit
+ // CHECK: BinaryOperator 0x{{[^ ]*}} <col:14, col:16> 'int *' '+'
+ // CHECK: ImplicitCastExpr
+ // CHECK: DeclRefExpr 0x{{[^ ]*}} <col:14> 'int[10]' lvalue Var 0x{{[^ ]*}} '__range1' 'int (&)[10]'
+ // CHECK: IntegerLiteral 0x{{[^ ]*}} <col:16> 'long' 10
+ // CHECK: BinaryOperator 0x{{[^ ]*}} <col:14> 'bool' '!='
+ // CHECK: ImplicitCastExpr
+ // CHECK: DeclRefExpr 0x{{[^ ]*}} <col:14> 'int *' lvalue Var 0x{{[^ ]*}} '__begin1' 'int *'
+ // CHECK: ImplicitCastExpr
+ // CHECK: DeclRefExpr 0x{{[^ ]*}} <col:14> 'int *' lvalue Var 0x{{[^ ]*}} '__end1' 'int *'
+ // CHECK: UnaryOperator 0x{{[^ ]*}} <col:14> 'int *' lvalue prefix '++'
+ // CHECK: DeclRefExpr 0x{{[^ ]*}} <col:14> 'int *' lvalue Var 0x{{[^ ]*}} '__begin1' 'int *'
+ // CHECK: DeclStmt
+ // CHECK: VarDecl 0x{{[^ ]*}} <col:8, col:14> col:12 v 'int' cinit
+ // CHECK: ImplicitCastExpr
+ // CHECK: UnaryOperator 0x{{[^ ]*}} <col:14> 'int' lvalue prefix '*' cannot overflow
+ // CHECK: ImplicitCastExpr
+ // CHECK: DeclRefExpr 0x{{[^ ]*}} <col:14> 'int *' lvalue Var 0x{{[^ ]*}} '__begin1' 'int *'
+ // CHECK: NullStmt
Container C;
for (int v : C)
@@ -230,63 +230,63 @@ void TestIteration() {
// CHECK-NEXT: DeclStmt
// CHECK-NEXT: VarDecl 0x{{[^ ]*}} <col:16> col:16 implicit used __range1 'Container &' cinit
// CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:16> 'Container' lvalue Var 0x{{[^ ]*}} 'C' 'Container'
- // CHECK-NEXT: DeclStmt
- // CHECK-NEXT: VarDecl 0x{{[^ ]*}} <col:14> col:14 implicit used __begin1 'int *' cinit
- // CHECK-NEXT: CXXMemberCallExpr 0x{{[^ ]*}} <col:14> 'int *'
- // CHECK-NEXT: MemberExpr 0x{{[^ ]*}} <col:14> '<bound member function type>' .begin 0x{{[^ ]*}}
- // CHECK-NEXT: ImplicitCastExpr
- // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:14> 'Container' lvalue Var 0x{{[^ ]*}} '__range1' 'Container &'
- // CHECK-NEXT: DeclStmt
- // CHECK-NEXT: VarDecl 0x{{[^ ]*}} <col:14> col:14 implicit used __end1 'int *' cinit
- // CHECK-NEXT: CXXMemberCallExpr 0x{{[^ ]*}} <col:14> 'int *'
- // CHECK-NEXT: MemberExpr 0x{{[^ ]*}} <col:14> '<bound member function type>' .end 0x{{[^ ]*}}
- // CHECK-NEXT: ImplicitCastExpr
- // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:14> 'Container' lvalue Var 0x{{[^ ]*}} '__range1' 'Container &'
- // CHECK-NEXT: BinaryOperator 0x{{[^ ]*}} <col:14> 'bool' '!='
- // CHECK-NEXT: ImplicitCastExpr
- // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:14> 'int *' lvalue Var 0x{{[^ ]*}} '__begin1' 'int *'
- // CHECK-NEXT: ImplicitCastExpr
- // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:14> 'int *' lvalue Var 0x{{[^ ]*}} '__end1' 'int *'
- // CHECK-NEXT: UnaryOperator 0x{{[^ ]*}} <col:14> 'int *' lvalue prefix '++'
- // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:14> 'int *' lvalue Var 0x{{[^ ]*}} '__begin1' 'int *'
- // CHECK-NEXT: DeclStmt
- // CHECK-NEXT: VarDecl 0x{{[^ ]*}} <col:8, col:14> col:12 v 'int' cinit
- // CHECK-NEXT: ImplicitCastExpr
- // CHECK-NEXT: UnaryOperator 0x{{[^ ]*}} <col:14> 'int' lvalue prefix '*' cannot overflow
- // CHECK-NEXT: ImplicitCastExpr
- // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:14> 'int *' lvalue Var 0x{{[^ ]*}} '__begin1' 'int *'
- // CHECK-NEXT: NullStmt
+ // CHECK: DeclStmt
+ // CHECK: VarDecl 0x{{[^ ]*}} <col:14> col:14 implicit used __begin1 'int *' cinit
+ // CHECK: CXXMemberCallExpr 0x{{[^ ]*}} <col:14> 'int *'
+ // CHECK: MemberExpr 0x{{[^ ]*}} <col:14> '<bound member function type>' .begin 0x{{[^ ]*}}
+ // CHECK: ImplicitCastExpr
+ // CHECK: DeclRefExpr 0x{{[^ ]*}} <col:14> 'Container' lvalue Var 0x{{[^ ]*}} '__range1' 'Container &'
+ // CHECK: DeclStmt
+ // CHECK: VarDecl 0x{{[^ ]*}} <col:14> col:14 implicit used __end1 'int *' cinit
+ // CHECK: CXXMemberCallExpr 0x{{[^ ]*}} <col:14> 'int *'
+ // CHECK: MemberExpr 0x{{[^ ]*}} <col:14> '<bound member function type>' .end 0x{{[^ ]*}}
+ // CHECK: ImplicitCastExpr
+ // CHECK: DeclRefExpr 0x{{[^ ]*}} <col:14> 'Container' lvalue Var 0x{{[^ ]*}} '__range1' 'Container &'
+ // CHECK: BinaryOperator 0x{{[^ ]*}} <col:14> 'bool' '!='
+ // CHECK: ImplicitCastExpr
+ // CHECK: DeclRefExpr 0x{{[^ ]*}} <col:14> 'int *' lvalue Var 0x{{[^ ]*}} '__begin1' 'int *'
+ // CHECK: ImplicitCastExpr
+ // CHECK: DeclRefExpr 0x{{[^ ]*}} <col:14> 'int *' lvalue Var 0x{{[^ ]*}} '__end1' 'int *'
+ // CHECK: UnaryOperator 0x{{[^ ]*}} <col:14> 'int *' lvalue prefix '++'
+ // CHECK: DeclRefExpr 0x{{[^ ]*}} <col:14> 'int *' lvalue Var 0x{{[^ ]*}} '__begin1' 'int *'
+ // CHECK: DeclStmt
+ // CHECK: VarDecl 0x{{[^ ]*}} <col:8, col:14> col:12 v 'int' cinit
+ // CHECK: ImplicitCastExpr
+ // CHECK: UnaryOperator 0x{{[^ ]*}} <col:14> 'int' lvalue prefix '*' cannot overflow
+ // CHECK: ImplicitCastExpr
+ // CHECK: DeclRefExpr 0x{{[^ ]*}} <col:14> 'int *' lvalue Var 0x{{[^ ]*}} '__begin1' 'int *'
+ // CHECK: NullStmt
for (int a; int v : vals)
;
// CHECK: CXXForRangeStmt 0x{{[^ ]*}} <line:[[@LINE-2]]:3, line:[[@LINE-1]]:5>
// CHECK-NEXT: DeclStmt
// CHECK-NEXT: VarDecl 0x{{[^ ]*}} <col:8, col:12> col:12 a 'int'
- // CHECK-NEXT: DeclStmt
- // CHECK-NEXT: VarDecl 0x{{[^ ]*}} <col:23> col:23 implicit used __range1 'int (&)[10]' cinit
- // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:23> 'int[10]' lvalue Var 0x{{[^ ]*}} 'vals' 'int[10]'
- // CHECK-NEXT: DeclStmt
- // CHECK-NEXT: VarDecl 0x{{[^ ]*}} <col:21> col:21 implicit used __begin1 'int *' cinit
- // CHECK-NEXT: ImplicitCastExpr
- // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:21> 'int[10]' lvalue Var 0x{{[^ ]*}} '__range1' 'int (&)[10]'
- // CHECK-NEXT: DeclStmt
- // CHECK-NEXT: VarDecl 0x{{[^ ]*}} <col:21, col:23> col:21 implicit used __end1 'int *' cinit
- // CHECK-NEXT: BinaryOperator 0x{{[^ ]*}} <col:21, col:23> 'int *' '+'
- // CHECK-NEXT: ImplicitCastExpr
- // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:21> 'int[10]' lvalue Var 0x{{[^ ]*}} '__range1' 'int (&)[10]'
- // CHECK-NEXT: IntegerLiteral 0x{{[^ ]*}} <col:23> 'long' 10
- // CHECK-NEXT: BinaryOperator 0x{{[^ ]*}} <col:21> 'bool' '!='
- // CHECK-NEXT: ImplicitCastExpr
- // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:21> 'int *' lvalue Var 0x{{[^ ]*}} '__begin1' 'int *'
- // CHECK-NEXT: ImplicitCastExpr
- // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:21> 'int *' lvalue Var 0x{{[^ ]*}} '__end1' 'int *'
- // CHECK-NEXT: UnaryOperator 0x{{[^ ]*}} <col:21> 'int *' lvalue prefix '++'
- // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:21> 'int *' lvalue Var 0x{{[^ ]*}} '__begin1' 'int *'
- // CHECK-NEXT: DeclStmt
- // CHECK-NEXT: VarDecl 0x{{[^ ]*}} <col:15, col:21> col:19 v 'int' cinit
- // CHECK-NEXT: ImplicitCastExpr
- // CHECK-NEXT: UnaryOperator 0x{{[^ ]*}} <col:21> 'int' lvalue prefix '*' cannot overflow
- // CHECK-NEXT: ImplicitCastExpr
- // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:21> 'int *' lvalue Var 0x{{[^ ]*}} '__begin1' 'int *'
- // CHECK-NEXT: NullStmt
+ // CHECK: DeclStmt
+ // CHECK: VarDecl 0x{{[^ ]*}} <col:23> col:23 implicit used __range1 'int (&)[10]' cinit
+ // CHECK: DeclRefExpr 0x{{[^ ]*}} <col:23> 'int[10]' lvalue Var 0x{{[^ ]*}} 'vals' 'int[10]'
+ // CHECK: DeclStmt
+ // CHECK: VarDecl 0x{{[^ ]*}} <col:21> col:21 implicit used __begin1 'int *' cinit
+ // CHECK: ImplicitCastExpr
+ // CHECK: DeclRefExpr 0x{{[^ ]*}} <col:21> 'int[10]' lvalue Var 0x{{[^ ]*}} '__range1' 'int (&)[10]'
+ // CHECK: DeclStmt
+ // CHECK: VarDecl 0x{{[^ ]*}} <col:21, col:23> col:21 implicit used __end1 'int *' cinit
+ // CHECK: BinaryOperator 0x{{[^ ]*}} <col:21, col:23> 'int *' '+'
+ // CHECK: ImplicitCastExpr
+ // CHECK: DeclRefExpr 0x{{[^ ]*}} <col:21> 'int[10]' lvalue Var 0x{{[^ ]*}} '__range1' 'int (&)[10]'
+ // CHECK: IntegerLiteral 0x{{[^ ]*}} <col:23> 'long' 10
+ // CHECK: BinaryOperator 0x{{[^ ]*}} <col:21> 'bool' '!='
+ // CHECK: ImplicitCastExpr
+ // CHECK: DeclRefExpr 0x{{[^ ]*}} <col:21> 'int *' lvalue Var 0x{{[^ ]*}} '__begin1' 'int *'
+ // CHECK: ImplicitCastExpr
+ // CHECK: DeclRefExpr 0x{{[^ ]*}} <col:21> 'int *' lvalue Var 0x{{[^ ]*}} '__end1' 'int *'
+ // CHECK: UnaryOperator 0x{{[^ ]*}} <col:21> 'int *' lvalue prefix '++'
+ // CHECK: DeclRefExpr 0x{{[^ ]*}} <col:21> 'int *' lvalue Var 0x{{[^ ]*}} '__begin1' 'int *'
+ // CHECK: DeclStmt
+ // CHECK: VarDecl 0x{{[^ ]*}} <col:15, col:21> col:19 v 'int' cinit
+ // CHECK: ImplicitCastExpr
+ // CHECK: UnaryOperator 0x{{[^ ]*}} <col:21> 'int' lvalue prefix '*' cannot overflow
+ // CHECK: ImplicitCastExpr
+ // CHECK: DeclRefExpr 0x{{[^ ]*}} <col:21> 'int *' lvalue Var 0x{{[^ ]*}} '__begin1' 'int *'
+ // CHECK: NullStmt
}
diff --git a/clang/test/AST/ast-dump-stmt.m b/clang/test/AST/ast-dump-stmt.m
index e0fc16b3fa825..1b351819ad569 100644
--- a/clang/test/AST/ast-dump-stmt.m
+++ b/clang/test/AST/ast-dump-stmt.m
@@ -39,7 +39,7 @@ void TestObjCAtCatchStmt(void) {
// CHECK-NEXT: CompoundStmt
// CHECK-NEXT: ObjCAtCatchStmt{{.*}}
// CHECK-NEXT: VarDecl{{.*}}a
-// CHECK-NEXT: CompoundStmt
+// CHECK: CompoundStmt
// CHECK-NEXT: ObjCAtCatchStmt{{.*}} catch all
// CHECK-NEXT: CompoundStmt
// CHECK-NEXT: ObjCAtFinallyStmt
diff --git a/clang/test/AST/ast-dump-template-decls-json.cpp b/clang/test/AST/ast-dump-template-decls-json.cpp
index 70f1d3b55f3ee..166bac874ca97 100644
--- a/clang/test/AST/ast-dump-template-decls-json.cpp
+++ b/clang/test/AST/ast-dump-template-decls-json.cpp
@@ -1,3132 +1,3417 @@
-// RUN: %clang_cc1 -std=c++17 -triple x86_64-unknown-unknown -ast-dump=json %s | FileCheck -strict-whitespace %s
-
-template <typename Ty>
-void a(Ty);
-
-template <typename... Ty>
-void b(Ty...);
-
-template <class Ty, typename Uy>
-void c(Ty);
-
-template <>
-void c<float, int>(float);
-
-template <typename Ty, template<typename> typename Uy>
-void d(Ty, Uy<Ty>);
-
-template <class Ty>
-void e(Ty);
-
-template <int N>
-void f(int i = N);
-
-template <typename Ty = int>
-void g(Ty);
-
-template <typename = void>
-void h();
-
-template <typename Ty>
-struct R {};
-
-template <>
-struct R<int> {};
-
-template <typename Ty, class Uy>
-struct S {};
-
-template <typename Ty>
-struct S<Ty, int> {};
-
-template <auto>
-struct T {};
-
-template <decltype(auto)>
-struct U {};
-
-template <typename Ty>
-struct V {
- template <typename Uy>
- void f();
-};
-
-template <typename Ty>
-template <typename Uy>
-void V<Ty>::f() {}
-
-template <template <typename> class = R>
-void i();
-
-template <int A> class W{
-};
-W(int)->W<1>;
-
-// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "TranslationUnitDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TypedefDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "__int128_t",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "__int128"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "__int128"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TypedefDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "__uint128_t",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned __int128"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned __int128"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TypedefDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "__NSConstantString",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "__NSConstantString_tag"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "RecordType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "__NSConstantString_tag"
-// CHECK-NEXT: },
-// CHECK-NEXT: "decl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "name": "__NSConstantString_tag"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TypedefDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "__builtin_ms_va_list",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "PointerType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TypedefDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "__builtin_va_list",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "__va_list_tag[1]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ConstantArrayType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "__va_list_tag[1]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "size": 1,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "RecordType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "__va_list_tag"
-// CHECK-NEXT: },
-// CHECK-NEXT: "decl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "name": "__va_list_tag"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 4,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 3,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 4,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 3,
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "Ty",
-// CHECK-NEXT: "tagUsed": "typename",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 4,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "a",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (Ty)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Ty"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 7,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 6,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 7,
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 6,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "Ty",
-// CHECK-NEXT: "tagUsed": "typename",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0,
-// CHECK-NEXT: "isParameterPack": true
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 7,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "b",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (Ty...)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Ty..."
-// CHECK-NEXT: },
-// CHECK-NEXT: "isParameterPack": true
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 10,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 9,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 10,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 9,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "Ty",
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 30,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 30,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Uy",
-// CHECK-NEXT: "tagUsed": "typename",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 10,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "c",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (Ty)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Ty"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "name": "c",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (float)"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 13,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 12,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 13,
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "previousDecl": "0x{{.*}}",
-// CHECK-NEXT: "name": "c",
-// CHECK-NEXT: "mangledName": "_Z1cIfiEvT_",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (float)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "kind": "TemplateArgument",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "kind": "TemplateArgument",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 16,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 15,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 16,
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "d",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 15,
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "Ty",
-// CHECK-NEXT: "tagUsed": "typename",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTemplateParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 52,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 52,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Uy",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 1,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 41,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 33,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 33,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "tagUsed": "typename",
-// CHECK-NEXT: "depth": 1,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 16,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "d",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (Ty, Uy<Ty>)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Ty"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Uy<Ty>"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 19,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 18,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 19,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "e",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 18,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "Ty",
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 19,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "e",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (Ty)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Ty"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 22,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 21,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 22,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "f",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NonTypeTemplateParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 21,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "N",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 22,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "f",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (int)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NonTypeTemplateParmDecl",
-// CHECK-NEXT: "name": "N",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 25,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 24,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 25,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "g",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 24,
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "Ty",
-// CHECK-NEXT: "tagUsed": "typename",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0,
-// CHECK-NEXT: "defaultArg": {
-// CHECK-NEXT: "kind": "TemplateArgument",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "kind": "TemplateArgument",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 25,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "g",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (Ty)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "Ty"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 28,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 27,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 28,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "h",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 27,
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "tagUsed": "typename",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0,
-// CHECK-NEXT: "defaultArg": {
-// CHECK-NEXT: "kind": "TemplateArgument",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "kind": "TemplateArgument",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 28,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "h",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ClassTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 31,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 30,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 31,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "R",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 30,
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Ty",
-// CHECK-NEXT: "tagUsed": "typename",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 31,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "R",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "R",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ClassTemplateSpecializationDecl",
-// CHECK-NEXT: "name": "R"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ClassTemplateSpecializationDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 34,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 33,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 34,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "R",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "canPassInRegisters": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "kind": "TemplateArgument",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "R",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ClassTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 37,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 36,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 37,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "S",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 36,
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Ty",
-// CHECK-NEXT: "tagUsed": "typename",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 30,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 30,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Uy",
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 37,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "S",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "S",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ClassTemplatePartialSpecializationDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 40,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 39,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 40,
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "S",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "kind": "TemplateArgument",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "type-parameter-0-0"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "type-parameter-0-0"
-// CHECK-NEXT: },
-// CHECK-NEXT: "isDependent": true,
-// CHECK-NEXT: "isInstantiationDependent": true,
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0,
-// CHECK-NEXT: "decl": {
-// CHECK-NEXT: "id": "0x0"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "kind": "TemplateArgument",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 39,
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "Ty",
-// CHECK-NEXT: "tagUsed": "typename",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 40,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "S",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ClassTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 43,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 42,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 43,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "T",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NonTypeTemplateParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 42,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "auto"
-// CHECK-NEXT: },
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 43,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "T",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "T",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ClassTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 46,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 45,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 46,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "U",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NonTypeTemplateParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 45,
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "decltype(auto)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 46,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "U",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "U",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ClassTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 49,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 48,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 52,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "V",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 48,
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Ty",
-// CHECK-NEXT: "tagUsed": "typename",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 49,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 52,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "V",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 49,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "V",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 51,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 50,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 51,
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "f",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 50,
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Uy",
-// CHECK-NEXT: "tagUsed": "typename",
-// CHECK-NEXT: "depth": 1,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 51,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "f",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 56,
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 55,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 56,
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "parentDeclContextId": "0x{{.*}}",
-// CHECK-NEXT: "previousDecl": "0x{{.*}}",
-// CHECK-NEXT: "name": "f",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 55,
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 2
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "Uy",
-// CHECK-NEXT: "tagUsed": "typename",
-// CHECK-NEXT: "depth": 1,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 56,
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 54,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 56,
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "parentDeclContextId": "0x{{.*}}",
-// CHECK-NEXT: "previousDecl": "0x{{.*}}",
-// CHECK-NEXT: "name": "f",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 59,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 58,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 59,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTemplateParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 58,
-// CHECK-NEXT: "col": 37,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 39,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0,
-// CHECK-NEXT: "defaultArg": {
-// CHECK-NEXT: "kind": "TemplateArgument"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "tagUsed": "typename",
-// CHECK-NEXT: "depth": 1,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "kind": "TemplateArgument",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 39,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 39,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 59,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ClassTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 61,
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 62,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "W",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NonTypeTemplateParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 61,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "A",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 62,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "W",
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 61,
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "W",
-// CHECK-NEXT: "tagUsed": "class"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ClassTemplateSpecializationDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 62,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "W",
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "kind": "TemplateArgument",
-// CHECK-NEXT: "value": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 61,
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "<deduction guide for W>",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NonTypeTemplateParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "A",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXDeductionGuideDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "<deduction guide for W>",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "auto () -> W<A>"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "<deduction guide for W>",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NonTypeTemplateParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "A",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXDeductionGuideDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "<deduction guide for W>",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "auto (W<A>) -> W<A>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "W<A>"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXDeductionGuideDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 63,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "<deduction guide for W>",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "auto (int) -> W<1>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
+// RUN: %clang_cc1 -std=c++17 -triple x86_64-unknown-unknown -ast-dump=json %s | FileCheck -strict-whitespace %s
+
+template <typename Ty>
+void a(Ty);
+
+template <typename... Ty>
+void b(Ty...);
+
+template <class Ty, typename Uy>
+void c(Ty);
+
+template <>
+void c<float, int>(float);
+
+template <typename Ty, template<typename> typename Uy>
+void d(Ty, Uy<Ty>);
+
+template <class Ty>
+void e(Ty);
+
+template <int N>
+void f(int i = N);
+
+template <typename Ty = int>
+void g(Ty);
+
+template <typename = void>
+void h();
+
+template <typename Ty>
+struct R {};
+
+template <>
+struct R<int> {};
+
+template <typename Ty, class Uy>
+struct S {};
+
+template <typename Ty>
+struct S<Ty, int> {};
+
+template <auto>
+struct T {};
+
+template <decltype(auto)>
+struct U {};
+
+template <typename Ty>
+struct V {
+ template <typename Uy>
+ void f();
+};
+
+template <typename Ty>
+template <typename Uy>
+void V<Ty>::f() {}
+
+template <template <typename> class = R>
+void i();
+
+template <int A> class W{
+};
+W(int)->W<1>;
+
+// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "TranslationUnitDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "__int128_t",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "__int128"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "__int128"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "__uint128_t",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned __int128"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned __int128"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "__NSConstantString",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "__NSConstantString_tag"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "__NSConstantString_tag"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "__NSConstantString_tag"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "__builtin_ms_va_list",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "PointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "__builtin_va_list",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "__va_list_tag[1]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ConstantArrayType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "__va_list_tag[1]"
+// CHECK-NEXT: },
+// CHECK-NEXT: "size": 1,
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "array"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "__va_list_tag"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "__va_list_tag"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionTemplateDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 145,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 4,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 116,
+// CHECK-NEXT: "line": 3,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 149,
+// CHECK-NEXT: "line": 4,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 135,
+// CHECK-NEXT: "line": 3,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 126,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 135,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "Ty",
+// CHECK-NEXT: "tagUsed": "typename",
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 145,
+// CHECK-NEXT: "line": 4,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 140,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 149,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "a",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (Ty)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 149,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 147,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 147,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Ty"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Ty"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isDependent": true,
+// CHECK-NEXT: "isInstantiationDependent": true,
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0,
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "name": "Ty"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionTemplateDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 187,
+// CHECK-NEXT: "line": 7,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 155,
+// CHECK-NEXT: "line": 6,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 194,
+// CHECK-NEXT: "line": 7,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 177,
+// CHECK-NEXT: "line": 6,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 165,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 177,
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "Ty",
+// CHECK-NEXT: "tagUsed": "typename",
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0,
+// CHECK-NEXT: "isParameterPack": true
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 187,
+// CHECK-NEXT: "line": 7,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 182,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 194,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "b",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (Ty...)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 194,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 189,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 191,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Ty..."
+// CHECK-NEXT: },
+// CHECK-NEXT: "isParameterPack": true,
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "PackExpansionType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Ty..."
+// CHECK-NEXT: },
+// CHECK-NEXT: "isDependent": true,
+// CHECK-NEXT: "isInstantiationDependent": true,
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Ty"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isDependent": true,
+// CHECK-NEXT: "isInstantiationDependent": true,
+// CHECK-NEXT: "containsUnexpandedPack": true,
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0,
+// CHECK-NEXT: "isPack": true,
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "name": "Ty"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionTemplateDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 239,
+// CHECK-NEXT: "line": 10,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 200,
+// CHECK-NEXT: "line": 9,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 243,
+// CHECK-NEXT: "line": 10,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 216,
+// CHECK-NEXT: "line": 9,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 210,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 216,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "Ty",
+// CHECK-NEXT: "tagUsed": "class",
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 229,
+// CHECK-NEXT: "col": 30,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 220,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 229,
+// CHECK-NEXT: "col": 30,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Uy",
+// CHECK-NEXT: "tagUsed": "typename",
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 239,
+// CHECK-NEXT: "line": 10,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 234,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 243,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "c",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (Ty)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 243,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 241,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 241,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Ty"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Ty"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isDependent": true,
+// CHECK-NEXT: "isInstantiationDependent": true,
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0,
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "name": "Ty"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "name": "c",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (float)"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 267,
+// CHECK-NEXT: "line": 13,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 249,
+// CHECK-NEXT: "line": 12,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 286,
+// CHECK-NEXT: "line": 13,
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "previousDecl": "0x{{.*}}",
+// CHECK-NEXT: "name": "c",
+// CHECK-NEXT: "mangledName": "_Z1cIfiEvT_",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (float)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "kind": "TemplateArgument",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "float"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "float"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "fpp"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "kind": "TemplateArgument",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 286,
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 281,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 281,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "float"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "fpp"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionTemplateDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 353,
+// CHECK-NEXT: "line": 16,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 292,
+// CHECK-NEXT: "line": 15,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 365,
+// CHECK-NEXT: "line": 16,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "d",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 311,
+// CHECK-NEXT: "line": 15,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 302,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 311,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "Ty",
+// CHECK-NEXT: "tagUsed": "typename",
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTemplateParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 343,
+// CHECK-NEXT: "col": 52,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 315,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 343,
+// CHECK-NEXT: "col": 52,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Uy",
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 1,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 332,
+// CHECK-NEXT: "col": 41,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 324,
+// CHECK-NEXT: "col": 33,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 324,
+// CHECK-NEXT: "col": 33,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "tagUsed": "typename",
+// CHECK-NEXT: "depth": 1,
+// CHECK-NEXT: "index": 0
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 353,
+// CHECK-NEXT: "line": 16,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 348,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 365,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "d",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (Ty, Uy<Ty>)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 357,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 355,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 355,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Ty"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Ty"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isDependent": true,
+// CHECK-NEXT: "isInstantiationDependent": true,
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0,
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "name": "Ty"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 365,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 359,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 364,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Uy<Ty>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ElaboratedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Uy<Ty>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isDependent": true,
+// CHECK-NEXT: "isInstantiationDependent": true,
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateSpecializationType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Uy<Ty>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isDependent": true,
+// CHECK-NEXT: "isInstantiationDependent": true,
+// CHECK-NEXT: "templateName": "Uy",
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "kind": "TemplateArgument",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Ty"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0,
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "name": "Ty"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionTemplateDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 397,
+// CHECK-NEXT: "line": 19,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 371,
+// CHECK-NEXT: "line": 18,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 401,
+// CHECK-NEXT: "line": 19,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "e",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 387,
+// CHECK-NEXT: "line": 18,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 381,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 387,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "Ty",
+// CHECK-NEXT: "tagUsed": "class",
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 397,
+// CHECK-NEXT: "line": 19,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 392,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 401,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "e",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (Ty)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 401,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 399,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 399,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Ty"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Ty"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isDependent": true,
+// CHECK-NEXT: "isInstantiationDependent": true,
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0,
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "name": "Ty"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionTemplateDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 430,
+// CHECK-NEXT: "line": 22,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 407,
+// CHECK-NEXT: "line": 21,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 441,
+// CHECK-NEXT: "line": 22,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "f",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NonTypeTemplateParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 421,
+// CHECK-NEXT: "line": 21,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 417,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 421,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "N",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 430,
+// CHECK-NEXT: "line": 22,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 425,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 441,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "f",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (int)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 436,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 432,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 440,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 440,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 440,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NonTypeTemplateParmDecl",
+// CHECK-NEXT: "name": "N",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionTemplateDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 482,
+// CHECK-NEXT: "line": 25,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 447,
+// CHECK-NEXT: "line": 24,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 486,
+// CHECK-NEXT: "line": 25,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "g",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 466,
+// CHECK-NEXT: "line": 24,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 457,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 471,
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "Ty",
+// CHECK-NEXT: "tagUsed": "typename",
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0,
+// CHECK-NEXT: "defaultArg": {
+// CHECK-NEXT: "kind": "TemplateArgument",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "kind": "TemplateArgument",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 482,
+// CHECK-NEXT: "line": 25,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 477,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 486,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "g",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (Ty)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 486,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 484,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 484,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Ty"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "Ty"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isDependent": true,
+// CHECK-NEXT: "isInstantiationDependent": true,
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0,
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "name": "Ty"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionTemplateDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 525,
+// CHECK-NEXT: "line": 28,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 492,
+// CHECK-NEXT: "line": 27,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 527,
+// CHECK-NEXT: "line": 28,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "h",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 511,
+// CHECK-NEXT: "line": 27,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 502,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 513,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "tagUsed": "typename",
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0,
+// CHECK-NEXT: "defaultArg": {
+// CHECK-NEXT: "kind": "TemplateArgument",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "kind": "TemplateArgument",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "void"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 525,
+// CHECK-NEXT: "line": 28,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 520,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 527,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "h",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ClassTemplateDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 564,
+// CHECK-NEXT: "line": 31,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 533,
+// CHECK-NEXT: "line": 30,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 567,
+// CHECK-NEXT: "line": 31,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "R",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 552,
+// CHECK-NEXT: "line": 30,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 543,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 552,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Ty",
+// CHECK-NEXT: "tagUsed": "typename",
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 564,
+// CHECK-NEXT: "line": 31,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 557,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 567,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "R",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true,
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "isConstexpr": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 564,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 557,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 564,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "R",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ClassTemplateSpecializationDecl",
+// CHECK-NEXT: "name": "R"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ClassTemplateSpecializationDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 593,
+// CHECK-NEXT: "line": 34,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 573,
+// CHECK-NEXT: "line": 33,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 601,
+// CHECK-NEXT: "line": 34,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "R",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true,
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "isConstexpr": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "kind": "TemplateArgument",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 593,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 586,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 593,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "R",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ClassTemplateDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 648,
+// CHECK-NEXT: "line": 37,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 607,
+// CHECK-NEXT: "line": 36,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 651,
+// CHECK-NEXT: "line": 37,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "S",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 626,
+// CHECK-NEXT: "line": 36,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 617,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 626,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Ty",
+// CHECK-NEXT: "tagUsed": "typename",
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 636,
+// CHECK-NEXT: "col": 30,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 630,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 636,
+// CHECK-NEXT: "col": 30,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Uy",
+// CHECK-NEXT: "tagUsed": "class",
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 648,
+// CHECK-NEXT: "line": 37,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 641,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 651,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "S",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true,
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "isConstexpr": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 648,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 641,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 648,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "S",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ClassTemplatePartialSpecializationDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 688,
+// CHECK-NEXT: "line": 40,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 657,
+// CHECK-NEXT: "line": 39,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 700,
+// CHECK-NEXT: "line": 40,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "S",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true,
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "isConstexpr": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "kind": "TemplateArgument",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "type-parameter-0-0"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "type-parameter-0-0"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isDependent": true,
+// CHECK-NEXT: "isInstantiationDependent": true,
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0,
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x0"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "kind": "TemplateArgument",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 676,
+// CHECK-NEXT: "line": 39,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 667,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 676,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "Ty",
+// CHECK-NEXT: "tagUsed": "typename",
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 688,
+// CHECK-NEXT: "line": 40,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 681,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 688,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "S",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ClassTemplateDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 730,
+// CHECK-NEXT: "line": 43,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 706,
+// CHECK-NEXT: "line": 42,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 733,
+// CHECK-NEXT: "line": 43,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "T",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NonTypeTemplateParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 720,
+// CHECK-NEXT: "line": 42,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 716,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 716,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "auto"
+// CHECK-NEXT: },
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 730,
+// CHECK-NEXT: "line": 43,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 723,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 733,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "T",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true,
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "isConstexpr": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 730,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 723,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 730,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "T",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ClassTemplateDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 773,
+// CHECK-NEXT: "line": 46,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 739,
+// CHECK-NEXT: "line": 45,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 776,
+// CHECK-NEXT: "line": 46,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "U",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NonTypeTemplateParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 763,
+// CHECK-NEXT: "line": 45,
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 749,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 762,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "decltype(auto)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 773,
+// CHECK-NEXT: "line": 46,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 766,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 776,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "U",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true,
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "isConstexpr": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 773,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 766,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 773,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "U",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ClassTemplateDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 813,
+// CHECK-NEXT: "line": 49,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 782,
+// CHECK-NEXT: "line": 48,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 857,
+// CHECK-NEXT: "line": 52,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "V",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 801,
+// CHECK-NEXT: "line": 48,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 792,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 801,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Ty",
+// CHECK-NEXT: "tagUsed": "typename",
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 813,
+// CHECK-NEXT: "line": 49,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 806,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 857,
+// CHECK-NEXT: "line": 52,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "V",
+// CHECK-NEXT: "tagUsed": "struct",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true,
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "isConstexpr": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 813,
+// CHECK-NEXT: "line": 49,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 806,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 813,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "V",
+// CHECK-NEXT: "tagUsed": "struct"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionTemplateDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 851,
+// CHECK-NEXT: "line": 51,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 820,
+// CHECK-NEXT: "line": 50,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 853,
+// CHECK-NEXT: "line": 51,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "f",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 839,
+// CHECK-NEXT: "line": 50,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 830,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 839,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Uy",
+// CHECK-NEXT: "tagUsed": "typename",
+// CHECK-NEXT: "depth": 1,
+// CHECK-NEXT: "index": 0
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 851,
+// CHECK-NEXT: "line": 51,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 846,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 853,
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "f",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionTemplateDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 923,
+// CHECK-NEXT: "line": 56,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 887,
+// CHECK-NEXT: "line": 55,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 928,
+// CHECK-NEXT: "line": 56,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "parentDeclContextId": "0x{{.*}}",
+// CHECK-NEXT: "previousDecl": "0x{{.*}}",
+// CHECK-NEXT: "name": "f",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 906,
+// CHECK-NEXT: "line": 55,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 897,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 906,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 2
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "Uy",
+// CHECK-NEXT: "tagUsed": "typename",
+// CHECK-NEXT: "depth": 1,
+// CHECK-NEXT: "index": 0
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXMethodDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 923,
+// CHECK-NEXT: "line": 56,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 863,
+// CHECK-NEXT: "line": 54,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 928,
+// CHECK-NEXT: "line": 56,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "parentDeclContextId": "0x{{.*}}",
+// CHECK-NEXT: "previousDecl": "0x{{.*}}",
+// CHECK-NEXT: "name": "f",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CompoundStmt",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 927,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 928,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionTemplateDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 980,
+// CHECK-NEXT: "line": 59,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 933,
+// CHECK-NEXT: "line": 58,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 982,
+// CHECK-NEXT: "line": 59,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTemplateParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 969,
+// CHECK-NEXT: "line": 58,
+// CHECK-NEXT: "col": 37,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 943,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 971,
+// CHECK-NEXT: "col": 39,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0,
+// CHECK-NEXT: "defaultArg": {
+// CHECK-NEXT: "kind": "TemplateArgument"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 961,
+// CHECK-NEXT: "col": 29,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 953,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 953,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "tagUsed": "typename",
+// CHECK-NEXT: "depth": 1,
+// CHECK-NEXT: "index": 0
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "kind": "TemplateArgument",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 971,
+// CHECK-NEXT: "col": 39,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 971,
+// CHECK-NEXT: "col": 39,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 980,
+// CHECK-NEXT: "line": 59,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 975,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 982,
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ClassTemplateDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1011,
+// CHECK-NEXT: "line": 61,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 988,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1015,
+// CHECK-NEXT: "line": 62,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "W",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NonTypeTemplateParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1002,
+// CHECK-NEXT: "line": 61,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 998,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1002,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "A",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1011,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1005,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1015,
+// CHECK-NEXT: "line": 62,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "W",
+// CHECK-NEXT: "tagUsed": "class",
+// CHECK-NEXT: "completeDefinition": true,
+// CHECK-NEXT: "definitionData": {
+// CHECK-NEXT: "canConstDefaultInit": true,
+// CHECK-NEXT: "copyAssign": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "copyCtor": {
+// CHECK-NEXT: "hasConstParam": true,
+// CHECK-NEXT: "implicitHasConstParam": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "defaultCtor": {
+// CHECK-NEXT: "defaultedIsConstexpr": true,
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "isConstexpr": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "irrelevant": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
+// CHECK-NEXT: "isAggregate": true,
+// CHECK-NEXT: "isEmpty": true,
+// CHECK-NEXT: "isLiteral": true,
+// CHECK-NEXT: "isPOD": true,
+// CHECK-NEXT: "isStandardLayout": true,
+// CHECK-NEXT: "isTrivial": true,
+// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK-NEXT: "moveAssign": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: },
+// CHECK-NEXT: "moveCtor": {
+// CHECK-NEXT: "exists": true,
+// CHECK-NEXT: "needsImplicit": true,
+// CHECK-NEXT: "simple": true,
+// CHECK-NEXT: "trivial": true
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1011,
+// CHECK-NEXT: "line": 61,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1005,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1011,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "W",
+// CHECK-NEXT: "tagUsed": "class"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ClassTemplateSpecializationDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1011,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 988,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1015,
+// CHECK-NEXT: "line": 62,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "W",
+// CHECK-NEXT: "tagUsed": "class",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "kind": "TemplateArgument",
+// CHECK-NEXT: "value": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionTemplateDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1011,
+// CHECK-NEXT: "line": 61,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 988,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1011,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "<deduction guide for W>",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NonTypeTemplateParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1002,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 998,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1002,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "A",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXDeductionGuideDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1011,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1011,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1011,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "<deduction guide for W>",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "auto () -> W<A>"
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionTemplateDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1011,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 988,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1011,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "<deduction guide for W>",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "NonTypeTemplateParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1002,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 998,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1002,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "A",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXDeductionGuideDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1011,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1011,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1011,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "<deduction guide for W>",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "auto (W<A>) -> W<A>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1011,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1011,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1011,
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "W<A>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "InjectedClassNameType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "W<A>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isDependent": true,
+// CHECK-NEXT: "isInstantiationDependent": true,
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "W"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXDeductionGuideDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1019,
+// CHECK-NEXT: "line": 63,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1019,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1030,
+// CHECK-NEXT: "col": 12,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "<deduction guide for W>",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "auto (int) -> W<1>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 1024,
+// CHECK-NEXT: "col": 6,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 1021,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 1021,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
diff --git a/clang/test/AST/ast-dump-template-decls.cpp b/clang/test/AST/ast-dump-template-decls.cpp
index 9f578e5afe561..ed4e4f78a3406 100644
--- a/clang/test/AST/ast-dump-template-decls.cpp
+++ b/clang/test/AST/ast-dump-template-decls.cpp
@@ -121,9 +121,9 @@ using type2 = typename C<int>::type1<void>;
// CHECK-NEXT: NestedNameSpecifier TypeSpec 'C<int>':'PR55886::C<int>'
// CHECK-NEXT: TypeAliasTemplateDecl {{.+}} type1
// CHECK-NEXT: TemplateArgument type 'void'
-// CHECK-NEXT: BuiltinType 0x{{[^ ]*}} 'void'
-// CHECK-NEXT: FunctionProtoType 0x{{[^ ]*}} 'void (int)' cdecl
-// CHECK-NEXT: BuiltinType 0x{{[^ ]*}} 'void'
+// CHECK-NEXT: -typeDetails: BuiltinType 0x{{[^ ]*}} 'void'
+// CHECK-NEXT: -typeDetails: FunctionProtoType 0x{{[^ ]*}} 'void (int)' cdecl
+// CHECK: -functionDetails: cdeclReturnType 0x{{[^ ]*}} 'void'
// CHECK-NEXT: SubstTemplateTypeParmType 0x{{[^ ]*}} 'int' sugar class depth 0 index 0 T
// CHECK-NEXT: ClassTemplateSpecialization 0x{{[^ ]*}} 'C'
// CHECK-NEXT: BuiltinType 0x{{[^ ]*}} 'int'
@@ -161,8 +161,8 @@ using test1 = D<E, int>;
// CHECK-NEXT: |-name: 'A':'subst_default_argument::A' qualified
// CHECK-NEXT: | `-ClassTemplateDecl {{.+}} A
// CHECK-NEXT: |-TemplateArgument type 'int'
-// CHECK-NEXT: | `-BuiltinType 0x{{[^ ]*}} 'int'
-// CHECK-NEXT: `-RecordType 0x{{[^ ]*}} 'subst_default_argument::A<int>'
+// CHECK-NEXT: | `-typeDetails: BuiltinType 0x{{[^ ]*}} 'int'
+// CHECK-NEXT: `-typeDetails: RecordType 0x{{[^ ]*}} 'subst_default_argument::A<int>'
// CHECK-NEXT: `-ClassTemplateSpecialization 0x{{[^ ]*}} 'A'
} // namespace subst_default_argument
@@ -171,21 +171,21 @@ template<class T>
T unTempl = 1;
// CHECK:VarTemplateDecl 0x{{[^ ]*}} <line:{{[0-9]+}}:1, line:{{[0-9]+}}:13> col:3 unTempl
// CHECK-NEXT: |-TemplateTypeParmDecl 0x{{[^ ]*}} <line:{{[0-9]+}}:10, col:16> col:16 referenced class depth 0 index 0 T
-// CHECK-NEXT: |-VarDecl 0x{{[^ ]*}} <line:{{[0-9]+}}:1, col:13> col:3 unTempl 'T' cinit
-// CHECK-NEXT: | `-IntegerLiteral 0x{{[^ ]*}} <col:13> 'int' 1
+// CHECK: |-VarDecl 0x{{[^ ]*}} <line:{{[0-9]+}}:1, col:13> col:3 unTempl 'T' cinit
+// CHECK: | |-IntegerLiteral 0x{{[^ ]*}} <col:13> 'int' 1
template<>
int unTempl<int>;
// CHECK: VarTemplateSpecializationDecl 0x{{[^ ]*}} <line:{{[0-9]+}}:1, line:{{[0-9]+}}:16> col:5 unTempl 'int'
-// CHECK-NEXT: `-TemplateArgument type 'int'
-// CHECK-NEXT: `-BuiltinType 0x{{[^ ]*}} 'int'
+// CHECK-NEXT: |-TemplateArgument type 'int'
+// CHECK-NEXT: `-typeDetails: BuiltinType 0x{{[^ ]*}} 'int'
template<>
float unTempl<float> = 1;
// CHECK: VarTemplateSpecializationDecl 0x{{[^ ]*}} <line:{{[0-9]+}}:1, line:{{[0-9]+}}:24> col:7 unTempl 'float'
// CHECK-NEXT: |-TemplateArgument type 'float'
-// CHECK-NEXT: | `-BuiltinType 0x{{[^ ]*}} 'float'
-// CHECK-NEXT: `-ImplicitCastExpr 0x{{[^ ]*}} <col:24> 'float' <IntegralToFloating>
+// CHECK-NEXT: | `-typeDetails: BuiltinType 0x{{[^ ]*}} 'float'
+// CHECK-NEXT: |-ImplicitCastExpr 0x{{[^ ]*}} <col:24> 'float' <IntegralToFloating>
// CHECK-NEXT: `-IntegerLiteral 0x{{[^ ]*}} <col:24> 'int' 1
template<class T, class U>
@@ -194,43 +194,43 @@ T binTempl = 1;
// CHECK-NEXT: |-TemplateTypeParmDecl 0x{{[^ ]*}} <line:{{[0-9]+}}:10, col:16> col:16 referenced class depth 0 index 0 T
// CHECK-NEXT: |-TemplateTypeParmDecl 0x{{[^ ]*}} <col:19, col:25> col:25 class depth 0 index 1 U
// CHECK-NEXT: |-VarDecl 0x{{[^ ]*}} <line:{{[0-9]+}}:1, col:14> col:3 binTempl 'T' cinit
-// CHECK-NEXT: | `-IntegerLiteral 0x{{[^ ]*}} <col:14> 'int' 1
+// CHECK-NEXT: | |-IntegerLiteral 0x{{[^ ]*}} <col:14> 'int' 1
template<class U>
int binTempl<int, U>;
// CHECK: VarTemplatePartialSpecializationDecl 0x{{[^ ]*}} <line:{{[0-9]+}}:1, line:{{[0-9]+}}:20> col:5 binTempl 'int'
// CHECK-NEXT: |-TemplateTypeParmDecl 0x{{[^ ]*}} <line:{{[0-9]+}}:10, col:16> col:16 referenced class depth 0 index 0 U
// CHECK-NEXT: |-TemplateArgument type 'int'
-// CHECK-NEXT: | `-BuiltinType 0x{{[^ ]*}} 'int'
-// CHECK-NEXT: `-TemplateArgument type 'type-parameter-0-0'
-// CHECK-NEXT: `-TemplateTypeParmType 0x{{[^ ]*}} 'type-parameter-0-0' dependent depth 0 index 0
+// CHECK-NEXT: | `-typeDetails: BuiltinType 0x{{[^ ]*}} 'int'
+// CHECK-NEXT: |-TemplateArgument type 'type-parameter-0-0'
+// CHECK-NEXT: `-typeDetails: TemplateTypeParmType 0x{{[^ ]*}} 'type-parameter-0-0' dependent depth 0 index 0
template<class U>
float binTempl<float, U> = 1;
// CHECK: VarTemplatePartialSpecializationDecl 0x{{[^ ]*}} <line:{{[0-9]+}}:1, line:{{[0-9]+}}:28> col:7 binTempl 'float'
// CHECK-NEXT: |-TemplateTypeParmDecl 0x{{[^ ]*}} <line:{{[0-9]+}}:10, col:16> col:16 referenced class depth 0 index 0 U
// CHECK-NEXT: |-TemplateArgument type 'float'
-// CHECK-NEXT: | `-BuiltinType 0x{{[^ ]*}} 'float'
+// CHECK-NEXT: | `-typeDetails: BuiltinType 0x{{[^ ]*}} 'float'
// CHECK-NEXT: |-TemplateArgument type 'type-parameter-0-0'
-// CHECK-NEXT: | `-TemplateTypeParmType 0x{{[^ ]*}} 'type-parameter-0-0' dependent depth 0 index 0
-// CHECK-NEXT: `-ImplicitCastExpr 0x{{[^ ]*}} <line:{{[0-9]+}}:28> 'float' <IntegralToFloating>
+// CHECK-NEXT: | `-typeDetails: TemplateTypeParmType 0x{{[^ ]*}} 'type-parameter-0-0' dependent depth 0 index 0
+// CHECK-NEXT: |-ImplicitCastExpr 0x{{[^ ]*}} <line:{{[0-9]+}}:28> 'float' <IntegralToFloating>
// CHECK-NEXT: `-IntegerLiteral 0x{{[^ ]*}} <col:28> 'int' 1
template<>
int binTempl<int, int>;
// CHECK: VarTemplateSpecializationDecl 0x{{[^ ]*}} <line:{{[0-9]+}}:1, line:{{[0-9]+}}:22> col:5 binTempl 'int'
// CHECK-NEXT: |-TemplateArgument type 'int'
-// CHECK-NEXT: | `-BuiltinType 0x{{[^ ]*}} 'int'
-// CHECK-NEXT: `-TemplateArgument type 'int'
-// CHECK-NEXT: `-BuiltinType 0x{{[^ ]*}} 'int'
+// CHECK-NEXT: | `-typeDetails: BuiltinType 0x{{[^ ]*}} 'int'
+// CHECK-NEXT: |-TemplateArgument type 'int'
+// CHECK-NEXT: `-typeDetails: BuiltinType 0x{{[^ ]*}} 'int'
template<>
float binTempl<float, float> = 1;
// CHECK: VarTemplateSpecializationDecl 0x{{[^ ]*}} <line:{{[0-9]+}}:1, line:{{[0-9]+}}:32> col:7 binTempl 'float'
// CHECK-NEXT: |-TemplateArgument type 'float'
-// CHECK-NEXT: | `-BuiltinType 0x{{[^ ]*}} 'float'
+// CHECK-NEXT: | `-typeDetails: BuiltinType 0x{{[^ ]*}} 'float'
// CHECK-NEXT: |-TemplateArgument type 'float'
-// CHECK-NEXT: | `-BuiltinType 0x{{[^ ]*}} 'float'
-// CHECK-NEXT: `-ImplicitCastExpr 0x{{[^ ]*}} <col:32> 'float' <IntegralToFloating>
+// CHECK-NEXT: | `-typeDetails: BuiltinType 0x{{[^ ]*}} 'float'
+// CHECK-NEXT: |-ImplicitCastExpr 0x{{[^ ]*}} <col:32> 'float' <IntegralToFloating>
// CHECK-NEXT: `-IntegerLiteral 0x{{[^ ]*}} <col:32> 'int' 1
}
diff --git a/clang/test/AST/ast-dump-template-json-win32-mangler-crash.cpp b/clang/test/AST/ast-dump-template-json-win32-mangler-crash.cpp
index 5ac55d269dce4..7430ecf4b7fde 100644
--- a/clang/test/AST/ast-dump-template-json-win32-mangler-crash.cpp
+++ b/clang/test/AST/ast-dump-template-json-win32-mangler-crash.cpp
@@ -1,3228 +1,528 @@
-// RUN: %clang_cc1 -triple x86_64-pc-win32 -ast-dump=json %s | FileCheck %s
-
-#define _INLINE_VAR inline
-#define _NODISCARD [[nodiscard]]
-
-template <class _Ty, _Ty _Val>
-struct integral_constant {
- static constexpr _Ty value = _Val;
-
- using value_type = _Ty;
- using type = integral_constant;
-
- constexpr operator value_type() const noexcept {
- return value;
- }
-
- _NODISCARD constexpr value_type operator()() const noexcept {
- return value;
- }
-};
-
-template <bool _Val>
-using bool_constant = integral_constant<bool, _Val>;
-
-template <class>
-_INLINE_VAR constexpr bool is_const_v = false; // determine whether type argument is const qualified
-
-template <class _Ty>
-_INLINE_VAR constexpr bool is_const_v<const _Ty> = true;
-
-template <class>
-_INLINE_VAR constexpr bool is_reference_v = false; // determine whether type argument is a reference
-
-template <class _Ty>
-_INLINE_VAR constexpr bool is_reference_v<_Ty&> = true;
-
-template <class _Ty>
-_INLINE_VAR constexpr bool is_reference_v<_Ty&&> = true;
-
-template <class _Ty>
-struct is_reference : bool_constant<is_reference_v<_Ty>> {};
-
-template <class _Ty>
-_INLINE_VAR constexpr bool is_function_v = // only function types and reference types can't be const qualified
- !is_const_v<const _Ty> && !is_reference_v<_Ty>;
-
-template <class _Ty>
-struct is_function : bool_constant<is_function_v<_Ty>> {};
-
-template <class>
-struct _Is_member_object_pointer {
- static constexpr bool value = false;
-};
-
-template <class _Ty1, class _Ty2>
-struct _Is_member_object_pointer<_Ty1 _Ty2::*> {
- static constexpr bool value = !is_function_v<_Ty1>;
- using _Class_type = _Ty2;
-};
-
-template <class _Ty>
-_INLINE_VAR constexpr bool is_member_object_pointer_v = __is_member_object_pointer(_Ty);
-
-template <class _Ty>
-struct is_member_object_pointer : bool_constant<is_member_object_pointer_v<_Ty>> {};
-
-template <class _Ty>
-_INLINE_VAR constexpr bool is_member_pointer_v = __is_member_pointer(_Ty);
-
-int main()
-{
- return 0;
-}
-// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
-
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "TranslationUnitDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TypedefDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "__int128_t",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "__int128"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "__int128"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TypedefDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "__uint128_t",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned __int128"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned __int128"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TypedefDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "__NSConstantString",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "__NSConstantString_tag"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "RecordType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "__NSConstantString_tag"
-// CHECK-NEXT: },
-// CHECK-NEXT: "decl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "name": "__NSConstantString_tag"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TypedefDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "__builtin_ms_va_list",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "PointerType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TypedefDecl",
-// CHECK-NEXT: "loc": {},
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "__builtin_va_list",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "PointerType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ClassTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 176,
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 7,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 17
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 138,
-// CHECK-NEXT: "line": 6,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 483,
-// CHECK-NEXT: "line": 20,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "integral_constant",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 154,
-// CHECK-NEXT: "line": 6,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 148,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 154,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "_Ty",
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NonTypeTemplateParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 163,
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 159,
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 163,
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "_Val",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Ty"
-// CHECK-NEXT: },
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 176,
-// CHECK-NEXT: "line": 7,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 17
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 169,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 483,
-// CHECK-NEXT: "line": 20,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "integral_constant",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 176,
-// CHECK-NEXT: "line": 7,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 17
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 169,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 176,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 17
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "integral_constant",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 221,
-// CHECK-NEXT: "line": 8,
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 200,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 229,
-// CHECK-NEXT: "col": 34,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "value",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const _Ty"
-// CHECK-NEXT: },
-// CHECK-NEXT: "storageClass": "static",
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true,
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 229,
-// CHECK-NEXT: "col": 34,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 229,
-// CHECK-NEXT: "col": 34,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Ty"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NonTypeTemplateParmDecl",
-// CHECK-NEXT: "name": "_Val",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Ty"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TypeAliasDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 246,
-// CHECK-NEXT: "line": 10,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 240,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 259,
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "value_type",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Ty"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Ty"
-// CHECK-NEXT: },
-// CHECK-NEXT: "isDependent": true,
-// CHECK-NEXT: "isInstantiationDependent": true,
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0,
-// CHECK-NEXT: "decl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "name": "_Ty"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TypeAliasDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 274,
-// CHECK-NEXT: "line": 11,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 268,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 287,
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 17
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "type",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "integral_constant<_Ty, _Val>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ElaboratedType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "integral_constant<_Ty, _Val>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "isDependent": true,
-// CHECK-NEXT: "isInstantiationDependent": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "InjectedClassNameType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "integral_constant<_Ty, _Val>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "isDependent": true,
-// CHECK-NEXT: "isInstantiationDependent": true,
-// CHECK-NEXT: "decl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "name": "integral_constant"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXConversionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 321,
-// CHECK-NEXT: "line": 13,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 311,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 9
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 386,
-// CHECK-NEXT: "line": 15,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "operator type-parameter-0-0",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "value_type () const noexcept"
-// CHECK-NEXT: },
-// CHECK-NEXT: "constexpr": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 358,
-// CHECK-NEXT: "line": 13,
-// CHECK-NEXT: "col": 52,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 386,
-// CHECK-NEXT: "line": 15,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ReturnStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 368,
-// CHECK-NEXT: "line": 14,
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 375,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 375,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 375,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const _Ty"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "value",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const _Ty"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXMethodDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 425,
-// CHECK-NEXT: "line": 17,
-// CHECK-NEXT: "col": 37,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 404,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 9
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 481,
-// CHECK-NEXT: "line": 19,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "operator()",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "value_type () const noexcept"
-// CHECK-NEXT: },
-// CHECK-NEXT: "constexpr": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 453,
-// CHECK-NEXT: "line": 17,
-// CHECK-NEXT: "col": 65,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 481,
-// CHECK-NEXT: "line": 19,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ReturnStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 463,
-// CHECK-NEXT: "line": 18,
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 470,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 470,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 470,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const _Ty"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "value",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const _Ty"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "WarnUnusedResultAttr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "spellingLoc": {
-// CHECK-NEXT: "offset": 125,
-// CHECK-NEXT: "line": 4,
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 9
-// CHECK-NEXT: },
-// CHECK-NEXT: "expansionLoc": {
-// CHECK-NEXT: "offset": 393,
-// CHECK-NEXT: "line": 17,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "spellingLoc": {
-// CHECK-NEXT: "offset": 125,
-// CHECK-NEXT: "line": 4,
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 9
-// CHECK-NEXT: },
-// CHECK-NEXT: "expansionLoc": {
-// CHECK-NEXT: "offset": 393,
-// CHECK-NEXT: "line": 17,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TypeAliasTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 508,
-// CHECK-NEXT: "line": 23,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 487,
-// CHECK-NEXT: "line": 22,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 558,
-// CHECK-NEXT: "line": 23,
-// CHECK-NEXT: "col": 51,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "bool_constant",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NonTypeTemplateParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 502,
-// CHECK-NEXT: "line": 22,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 497,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 502,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "_Val",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TypeAliasDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 514,
-// CHECK-NEXT: "line": 23,
-// CHECK-NEXT: "col": 7,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 508,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 558,
-// CHECK-NEXT: "col": 51,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "bool_constant",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "integral_constant<bool, _Val>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ElaboratedType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "integral_constant<bool, _Val>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "isDependent": true,
-// CHECK-NEXT: "isInstantiationDependent": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateSpecializationType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "integral_constant<bool, _Val>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "isDependent": true,
-// CHECK-NEXT: "isInstantiationDependent": true,
-// CHECK-NEXT: "templateName": "integral_constant",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "kind": "TemplateArgument",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "kind": "TemplateArgument",
-// CHECK-NEXT: "isExpr": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 554,
-// CHECK-NEXT: "col": 47,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 554,
-// CHECK-NEXT: "col": 47,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "NonTypeTemplateParmDecl",
-// CHECK-NEXT: "name": "_Val",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 606,
-// CHECK-NEXT: "line": 26,
-// CHECK-NEXT: "col": 28,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 562,
-// CHECK-NEXT: "line": 25,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 619,
-// CHECK-NEXT: "line": 26,
-// CHECK-NEXT: "col": 41,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "is_const_v",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 577,
-// CHECK-NEXT: "line": 25,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 572,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 572,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 606,
-// CHECK-NEXT: "line": 26,
-// CHECK-NEXT: "col": 28,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "spellingLoc": {
-// CHECK-NEXT: "offset": 97,
-// CHECK-NEXT: "line": 3,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "expansionLoc": {
-// CHECK-NEXT: "offset": 579,
-// CHECK-NEXT: "line": 26,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 11
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 619,
-// CHECK-NEXT: "col": 41,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "is_const_v",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true,
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXBoolLiteralExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 619,
-// CHECK-NEXT: "col": 41,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 619,
-// CHECK-NEXT: "col": 41,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": false
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarTemplatePartialSpecializationDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 729,
-// CHECK-NEXT: "line": 29,
-// CHECK-NEXT: "col": 28,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 681,
-// CHECK-NEXT: "line": 28,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 753,
-// CHECK-NEXT: "line": 29,
-// CHECK-NEXT: "col": 52,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "is_const_v",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true,
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 697,
-// CHECK-NEXT: "line": 28,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 691,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 697,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "_Ty",
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "kind": "TemplateArgument",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const type-parameter-0-0"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "QualType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const type-parameter-0-0"
-// CHECK-NEXT: },
-// CHECK-NEXT: "qualifiers": "const",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "type-parameter-0-0"
-// CHECK-NEXT: },
-// CHECK-NEXT: "isDependent": true,
-// CHECK-NEXT: "isInstantiationDependent": true,
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0,
-// CHECK-NEXT: "decl": {
-// CHECK-NEXT: "id": "0x0"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXBoolLiteralExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 753,
-// CHECK-NEXT: "line": 29,
-// CHECK-NEXT: "col": 52,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 753,
-// CHECK-NEXT: "col": 52,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": true
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 804,
-// CHECK-NEXT: "line": 32,
-// CHECK-NEXT: "col": 28,
-// CHECK-NEXT: "tokLen": 14
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 760,
-// CHECK-NEXT: "line": 31,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 821,
-// CHECK-NEXT: "line": 32,
-// CHECK-NEXT: "col": 45,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "is_reference_v",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 775,
-// CHECK-NEXT: "line": 31,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 770,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 770,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 804,
-// CHECK-NEXT: "line": 32,
-// CHECK-NEXT: "col": 28,
-// CHECK-NEXT: "tokLen": 14
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "spellingLoc": {
-// CHECK-NEXT: "offset": 97,
-// CHECK-NEXT: "line": 3,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "expansionLoc": {
-// CHECK-NEXT: "offset": 777,
-// CHECK-NEXT: "line": 32,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 11
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 821,
-// CHECK-NEXT: "col": 45,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "is_reference_v",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true,
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXBoolLiteralExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 821,
-// CHECK-NEXT: "col": 45,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 821,
-// CHECK-NEXT: "col": 45,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": false
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarTemplatePartialSpecializationDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 927,
-// CHECK-NEXT: "line": 35,
-// CHECK-NEXT: "col": 28,
-// CHECK-NEXT: "tokLen": 14
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 879,
-// CHECK-NEXT: "line": 34,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 950,
-// CHECK-NEXT: "line": 35,
-// CHECK-NEXT: "col": 51,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "is_reference_v",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true,
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 895,
-// CHECK-NEXT: "line": 34,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 889,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 895,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "_Ty",
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "kind": "TemplateArgument",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "type-parameter-0-0 &"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "LValueReferenceType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "type-parameter-0-0 &"
-// CHECK-NEXT: },
-// CHECK-NEXT: "isDependent": true,
-// CHECK-NEXT: "isInstantiationDependent": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "type-parameter-0-0"
-// CHECK-NEXT: },
-// CHECK-NEXT: "isDependent": true,
-// CHECK-NEXT: "isInstantiationDependent": true,
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0,
-// CHECK-NEXT: "decl": {
-// CHECK-NEXT: "id": "0x0"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXBoolLiteralExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 950,
-// CHECK-NEXT: "line": 35,
-// CHECK-NEXT: "col": 51,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 950,
-// CHECK-NEXT: "col": 51,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": true
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarTemplatePartialSpecializationDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1005,
-// CHECK-NEXT: "line": 38,
-// CHECK-NEXT: "col": 28,
-// CHECK-NEXT: "tokLen": 14
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 957,
-// CHECK-NEXT: "line": 37,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1029,
-// CHECK-NEXT: "line": 38,
-// CHECK-NEXT: "col": 52,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "is_reference_v",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true,
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 973,
-// CHECK-NEXT: "line": 37,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 967,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 973,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "_Ty",
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "kind": "TemplateArgument",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "type-parameter-0-0 &&"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "RValueReferenceType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "type-parameter-0-0 &&"
-// CHECK-NEXT: },
-// CHECK-NEXT: "isDependent": true,
-// CHECK-NEXT: "isInstantiationDependent": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "type-parameter-0-0"
-// CHECK-NEXT: },
-// CHECK-NEXT: "isDependent": true,
-// CHECK-NEXT: "isInstantiationDependent": true,
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0,
-// CHECK-NEXT: "decl": {
-// CHECK-NEXT: "id": "0x0"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXBoolLiteralExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1029,
-// CHECK-NEXT: "line": 38,
-// CHECK-NEXT: "col": 52,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1029,
-// CHECK-NEXT: "col": 52,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": true
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ClassTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1064,
-// CHECK-NEXT: "line": 41,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 12
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1036,
-// CHECK-NEXT: "line": 40,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1115,
-// CHECK-NEXT: "line": 41,
-// CHECK-NEXT: "col": 59,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "is_reference",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1052,
-// CHECK-NEXT: "line": 40,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1046,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1052,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "_Ty",
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1064,
-// CHECK-NEXT: "line": 41,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 12
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1057,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1115,
-// CHECK-NEXT: "col": 59,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "is_reference",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "bases": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "access": "public",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "integral_constant<bool, is_reference_v<_Ty>>",
-// CHECK-NEXT: "qualType": "bool_constant<is_reference_v<_Ty>>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "writtenAccess": "none"
-// CHECK-NEXT: }
-// CHECK-NEXT: ],
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1064,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 12
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1057,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1064,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 12
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "is_reference",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1167,
-// CHECK-NEXT: "line": 44,
-// CHECK-NEXT: "col": 28,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1119,
-// CHECK-NEXT: "line": 43,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1300,
-// CHECK-NEXT: "line": 45,
-// CHECK-NEXT: "col": 50,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "is_function_v",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1135,
-// CHECK-NEXT: "line": 43,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1129,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1135,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "_Ty",
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1167,
-// CHECK-NEXT: "line": 44,
-// CHECK-NEXT: "col": 28,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "spellingLoc": {
-// CHECK-NEXT: "offset": 97,
-// CHECK-NEXT: "line": 3,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "expansionLoc": {
-// CHECK-NEXT: "offset": 1140,
-// CHECK-NEXT: "line": 44,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 11
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1300,
-// CHECK-NEXT: "line": 45,
-// CHECK-NEXT: "col": 50,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "is_function_v",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true,
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BinaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1255,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1300,
-// CHECK-NEXT: "col": 50,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<dependent type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "opcode": "&&",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1255,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1276,
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<dependent type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "isPostfix": false,
-// CHECK-NEXT: "opcode": "!",
-// CHECK-NEXT: "canOverflow": false,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnresolvedLookupExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1256,
-// CHECK-NEXT: "col": 6,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1276,
-// CHECK-NEXT: "col": 26,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<dependent type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "usesADL": false,
-// CHECK-NEXT: "name": "is_const_v",
-// CHECK-NEXT: "lookups": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarTemplateDecl",
-// CHECK-NEXT: "name": "is_const_v"
-// CHECK-NEXT: }
-// CHECK-NEXT: ],
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "kind": "TemplateArgument",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const _Ty"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "QualType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const _Ty"
-// CHECK-NEXT: },
-// CHECK-NEXT: "qualifiers": "const",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Ty"
-// CHECK-NEXT: },
-// CHECK-NEXT: "isDependent": true,
-// CHECK-NEXT: "isInstantiationDependent": true,
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0,
-// CHECK-NEXT: "decl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "name": "_Ty"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1281,
-// CHECK-NEXT: "col": 31,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1300,
-// CHECK-NEXT: "col": 50,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<dependent type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "isPostfix": false,
-// CHECK-NEXT: "opcode": "!",
-// CHECK-NEXT: "canOverflow": false,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnresolvedLookupExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1282,
-// CHECK-NEXT: "col": 32,
-// CHECK-NEXT: "tokLen": 14
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1300,
-// CHECK-NEXT: "col": 50,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<dependent type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "usesADL": false,
-// CHECK-NEXT: "name": "is_reference_v",
-// CHECK-NEXT: "lookups": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarTemplateDecl",
-// CHECK-NEXT: "name": "is_reference_v"
-// CHECK-NEXT: }
-// CHECK-NEXT: ],
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "kind": "TemplateArgument",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Ty"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Ty"
-// CHECK-NEXT: },
-// CHECK-NEXT: "isDependent": true,
-// CHECK-NEXT: "isInstantiationDependent": true,
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0,
-// CHECK-NEXT: "decl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "name": "_Ty"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ClassTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1332,
-// CHECK-NEXT: "line": 48,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 11
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1304,
-// CHECK-NEXT: "line": 47,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1381,
-// CHECK-NEXT: "line": 48,
-// CHECK-NEXT: "col": 57,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "is_function",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1320,
-// CHECK-NEXT: "line": 47,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1314,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1320,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "_Ty",
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1332,
-// CHECK-NEXT: "line": 48,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 11
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1325,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1381,
-// CHECK-NEXT: "col": 57,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "is_function",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "bases": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "access": "public",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "integral_constant<bool, is_function_v<_Ty>>",
-// CHECK-NEXT: "qualType": "bool_constant<is_function_v<_Ty>>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "writtenAccess": "none"
-// CHECK-NEXT: }
-// CHECK-NEXT: ],
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1332,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 11
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1325,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1332,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 11
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "is_function",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ClassTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1409,
-// CHECK-NEXT: "line": 51,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 25
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1385,
-// CHECK-NEXT: "line": 50,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1478,
-// CHECK-NEXT: "line": 53,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "_Is_member_object_pointer",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1400,
-// CHECK-NEXT: "line": 50,
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1395,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1395,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1409,
-// CHECK-NEXT: "line": 51,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 25
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1402,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1478,
-// CHECK-NEXT: "line": 53,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "_Is_member_object_pointer",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1409,
-// CHECK-NEXT: "line": 51,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 25
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1402,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1409,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 25
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "_Is_member_object_pointer",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1463,
-// CHECK-NEXT: "line": 52,
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1441,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1471,
-// CHECK-NEXT: "col": 35,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "value",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "storageClass": "static",
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true,
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXBoolLiteralExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1471,
-// CHECK-NEXT: "col": 35,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1471,
-// CHECK-NEXT: "col": 35,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": false
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ClassTemplatePartialSpecializationDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1523,
-// CHECK-NEXT: "line": 56,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 25
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1482,
-// CHECK-NEXT: "line": 55,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1661,
-// CHECK-NEXT: "line": 59,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "_Is_member_object_pointer",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isPOD": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "kind": "TemplateArgument",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "type-parameter-0-0 type-parameter-0-1::*"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "MemberPointerType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "type-parameter-0-0 type-parameter-0-1::*"
-// CHECK-NEXT: },
-// CHECK-NEXT: "isDependent": true,
-// CHECK-NEXT: "isInstantiationDependent": true,
-// CHECK-NEXT: "isData": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "type-parameter-0-1"
-// CHECK-NEXT: },
-// CHECK-NEXT: "isDependent": true,
-// CHECK-NEXT: "isInstantiationDependent": true,
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 1,
-// CHECK-NEXT: "decl": {
-// CHECK-NEXT: "id": "0x0"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "type-parameter-0-0"
-// CHECK-NEXT: },
-// CHECK-NEXT: "isDependent": true,
-// CHECK-NEXT: "isInstantiationDependent": true,
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0,
-// CHECK-NEXT: "decl": {
-// CHECK-NEXT: "id": "0x0"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1498,
-// CHECK-NEXT: "line": 55,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1492,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1498,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "_Ty1",
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1510,
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1504,
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1510,
-// CHECK-NEXT: "col": 29,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "_Ty2",
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1523,
-// CHECK-NEXT: "line": 56,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 25
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1516,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1523,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 25
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "_Is_member_object_pointer",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1591,
-// CHECK-NEXT: "line": 57,
-// CHECK-NEXT: "col": 27,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1569,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1618,
-// CHECK-NEXT: "col": 54,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "value",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "storageClass": "static",
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true,
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnaryOperator",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1599,
-// CHECK-NEXT: "col": 35,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1618,
-// CHECK-NEXT: "col": 54,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<dependent type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "isPostfix": false,
-// CHECK-NEXT: "opcode": "!",
-// CHECK-NEXT: "canOverflow": false,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnresolvedLookupExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1600,
-// CHECK-NEXT: "col": 36,
-// CHECK-NEXT: "tokLen": 13
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1618,
-// CHECK-NEXT: "col": 54,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<dependent type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "usesADL": false,
-// CHECK-NEXT: "name": "is_function_v",
-// CHECK-NEXT: "lookups": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarTemplateDecl",
-// CHECK-NEXT: "name": "is_function_v"
-// CHECK-NEXT: }
-// CHECK-NEXT: ],
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "kind": "TemplateArgument",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Ty1"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Ty1"
-// CHECK-NEXT: },
-// CHECK-NEXT: "isDependent": true,
-// CHECK-NEXT: "isInstantiationDependent": true,
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0,
-// CHECK-NEXT: "decl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "name": "_Ty1"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TypeAliasDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1631,
-// CHECK-NEXT: "line": 58,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 11
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1625,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1655,
-// CHECK-NEXT: "col": 35,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "_Class_type",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Ty2"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Ty2"
-// CHECK-NEXT: },
-// CHECK-NEXT: "isDependent": true,
-// CHECK-NEXT: "isInstantiationDependent": true,
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 1,
-// CHECK-NEXT: "decl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "name": "_Ty2"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1713,
-// CHECK-NEXT: "line": 62,
-// CHECK-NEXT: "col": 28,
-// CHECK-NEXT: "tokLen": 26
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1665,
-// CHECK-NEXT: "line": 61,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1772,
-// CHECK-NEXT: "line": 62,
-// CHECK-NEXT: "col": 87,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "is_member_object_pointer_v",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1681,
-// CHECK-NEXT: "line": 61,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1675,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1681,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "_Ty",
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1713,
-// CHECK-NEXT: "line": 62,
-// CHECK-NEXT: "col": 28,
-// CHECK-NEXT: "tokLen": 26
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "spellingLoc": {
-// CHECK-NEXT: "offset": 97,
-// CHECK-NEXT: "line": 3,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "expansionLoc": {
-// CHECK-NEXT: "offset": 1686,
-// CHECK-NEXT: "line": 62,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 11
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1772,
-// CHECK-NEXT: "col": 87,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "is_member_object_pointer_v",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true,
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TypeTraitExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1742,
-// CHECK-NEXT: "col": 57,
-// CHECK-NEXT: "tokLen": 26
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1772,
-// CHECK-NEXT: "col": 87,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Ty"
-// CHECK-NEXT: },
-// CHECK-NEXT: "isDependent": true,
-// CHECK-NEXT: "isInstantiationDependent": true,
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0,
-// CHECK-NEXT: "decl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "name": "_Ty"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ClassTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1804,
-// CHECK-NEXT: "line": 65,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 24
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1776,
-// CHECK-NEXT: "line": 64,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1879,
-// CHECK-NEXT: "line": 65,
-// CHECK-NEXT: "col": 83,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "is_member_object_pointer",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1792,
-// CHECK-NEXT: "line": 64,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1786,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1792,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "_Ty",
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1804,
-// CHECK-NEXT: "line": 65,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 24
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1797,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1879,
-// CHECK-NEXT: "col": 83,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "is_member_object_pointer",
-// CHECK-NEXT: "tagUsed": "struct",
-// CHECK-NEXT: "completeDefinition": true,
-// CHECK-NEXT: "definitionData": {
-// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "copyAssign": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "copyCtor": {
-// CHECK-NEXT: "hasConstParam": true,
-// CHECK-NEXT: "implicitHasConstParam": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "defaultCtor": {
-// CHECK-NEXT: "defaultedIsConstexpr": true,
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "isConstexpr": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "irrelevant": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
-// CHECK-NEXT: "isAggregate": true,
-// CHECK-NEXT: "isEmpty": true,
-// CHECK-NEXT: "isLiteral": true,
-// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
-// CHECK-NEXT: "moveAssign": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: },
-// CHECK-NEXT: "moveCtor": {
-// CHECK-NEXT: "exists": true,
-// CHECK-NEXT: "needsImplicit": true,
-// CHECK-NEXT: "simple": true,
-// CHECK-NEXT: "trivial": true
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "bases": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "access": "public",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "integral_constant<bool, is_member_object_pointer_v<_Ty>>",
-// CHECK-NEXT: "qualType": "bool_constant<is_member_object_pointer_v<_Ty>>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "writtenAccess": "none"
-// CHECK-NEXT: }
-// CHECK-NEXT: ],
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1804,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 24
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1797,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1804,
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 24
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "name": "is_member_object_pointer",
-// CHECK-NEXT: "tagUsed": "struct"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarTemplateDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1931,
-// CHECK-NEXT: "line": 68,
-// CHECK-NEXT: "col": 28,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1883,
-// CHECK-NEXT: "line": 67,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 8
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1976,
-// CHECK-NEXT: "line": 68,
-// CHECK-NEXT: "col": 73,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "is_member_pointer_v",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1899,
-// CHECK-NEXT: "line": 67,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1893,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1899,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isReferenced": true,
-// CHECK-NEXT: "name": "_Ty",
-// CHECK-NEXT: "tagUsed": "class",
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1931,
-// CHECK-NEXT: "line": 68,
-// CHECK-NEXT: "col": 28,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "spellingLoc": {
-// CHECK-NEXT: "offset": 97,
-// CHECK-NEXT: "line": 3,
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "expansionLoc": {
-// CHECK-NEXT: "offset": 1904,
-// CHECK-NEXT: "line": 68,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 11
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1976,
-// CHECK-NEXT: "col": 73,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "is_member_pointer_v",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inline": true,
-// CHECK-NEXT: "constexpr": true,
-// CHECK-NEXT: "init": "c",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TypeTraitExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1953,
-// CHECK-NEXT: "col": 50,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 1976,
-// CHECK-NEXT: "col": 73,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "bool"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "_Ty"
-// CHECK-NEXT: },
-// CHECK-NEXT: "isDependent": true,
-// CHECK-NEXT: "isInstantiationDependent": true,
-// CHECK-NEXT: "depth": 0,
-// CHECK-NEXT: "index": 0,
-// CHECK-NEXT: "decl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
-// CHECK-NEXT: "name": "_Ty"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": 1984,
-// CHECK-NEXT: "line": 70,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1980,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 2007,
-// CHECK-NEXT: "line": 73,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "main",
-// CHECK-NEXT: "mangledName": "main",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CompoundStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1991,
-// CHECK-NEXT: "line": 71,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 2007,
-// CHECK-NEXT: "line": 73,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ReturnStmt",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 1997,
-// CHECK-NEXT: "line": 72,
-// CHECK-NEXT: "col": 5,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 2004,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "IntegerLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": 2004,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": 2004,
-// CHECK-NEXT: "col": 12,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
+// RUN: %clang_cc1 -triple x86_64-pc-win32 -ast-dump=json %s | FileCheck %s
+
+#define _INLINE_VAR inline
+#define _NODISCARD [[nodiscard]]
+
+// template <class _Ty, _Ty _Val>
+// struct integral_constant {
+// static constexpr _Ty value = _Val;
+
+// using value_type = _Ty;
+// using type = integral_constant;
+
+// constexpr operator value_type() const noexcept {
+// return value;
+// }
+
+// _NODISCARD constexpr value_type operator()() const noexcept {
+// return value;
+// }
+// };
+
+// template <bool _Val>
+// using bool_constant = integral_constant<bool, _Val>;
+
+template <class>
+_INLINE_VAR constexpr bool is_const_v = false; // determine whether type argument is const qualified
+
+template <class _Ty>
+_INLINE_VAR constexpr bool is_const_v<const _Ty> = true;
+
+// template <class>
+// _INLINE_VAR constexpr bool is_reference_v = false; // determine whether type argument is a reference
+
+// template <class _Ty>
+// _INLINE_VAR constexpr bool is_reference_v<_Ty&> = true;
+
+// template <class _Ty>
+// _INLINE_VAR constexpr bool is_reference_v<_Ty&&> = true;
+
+// template <class _Ty>
+// struct is_reference : bool_constant<is_reference_v<_Ty>> {};
+
+// template <class _Ty>
+// _INLINE_VAR constexpr bool is_function_v = // only function types and reference types can't be const qualified
+// !is_const_v<const _Ty> && !is_reference_v<_Ty>;
+
+// template <class _Ty>
+// struct is_function : bool_constant<is_function_v<_Ty>> {};
+
+// template <class>
+// struct _Is_member_object_pointer {
+// static constexpr bool value = false;
+// };
+
+// template <class _Ty1, class _Ty2>
+// struct _Is_member_object_pointer<_Ty1 _Ty2::*> {
+// static constexpr bool value = !is_function_v<_Ty1>;
+// using _Class_type = _Ty2;
+// };
+
+// template <class _Ty>
+// _INLINE_VAR constexpr bool is_member_object_pointer_v = __is_member_object_pointer(_Ty);
+
+// template <class _Ty>
+// struct is_member_object_pointer : bool_constant<is_member_object_pointer_v<_Ty>> {};
+
+// template <class _Ty>
+// _INLINE_VAR constexpr bool is_member_pointer_v = __is_member_pointer(_Ty);
+
+// int main()
+// {
+// return 0;
+// }
+// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "TranslationUnitDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "__int128_t",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "__int128"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "__int128"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "__uint128_t",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned __int128"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned __int128"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "__NSConstantString",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "__NSConstantString_tag"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "__NSConstantString_tag"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "__NSConstantString_tag"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "__builtin_ms_va_list",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "PointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefDecl",
+// CHECK-NEXT: "loc": {},
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {},
+// CHECK-NEXT: "end": {}
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "name": "__builtin_va_list",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarTemplateDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 673,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 26,
+// CHECK-NEXT: "col": 28,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 628,
+// CHECK-NEXT: "line": 25,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 686,
+// CHECK-NEXT: "line": 26,
+// CHECK-NEXT: "col": 41,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "is_const_v",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 643,
+// CHECK-NEXT: "line": 25,
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 638,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 638,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "tagUsed": "class",
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 673,
+// CHECK-NEXT: "line": 26,
+// CHECK-NEXT: "col": 28,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "spellingLoc": {
+// CHECK-NEXT: "offset": 99,
+// CHECK-NEXT: "line": 3,
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 6
+// CHECK-NEXT: },
+// CHECK-NEXT: "expansionLoc": {
+// CHECK-NEXT: "offset": 646,
+// CHECK-NEXT: "line": 26,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 11
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 686,
+// CHECK-NEXT: "col": 41,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "is_const_v",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "constexpr": true,
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXBoolLiteralExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 686,
+// CHECK-NEXT: "col": 41,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 686,
+// CHECK-NEXT: "col": 41,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": false
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "const",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarTemplatePartialSpecializationDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 799,
+// CHECK-NEXT: "line": 29,
+// CHECK-NEXT: "col": 28,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 750,
+// CHECK-NEXT: "line": 28,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 8
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 823,
+// CHECK-NEXT: "line": 29,
+// CHECK-NEXT: "col": 52,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "is_const_v",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "inline": true,
+// CHECK-NEXT: "constexpr": true,
+// CHECK-NEXT: "init": "c",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 766,
+// CHECK-NEXT: "line": 28,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 760,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 766,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isReferenced": true,
+// CHECK-NEXT: "name": "_Ty",
+// CHECK-NEXT: "tagUsed": "class",
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "kind": "TemplateArgument",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const type-parameter-0-0"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualTypeDetail": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const type-parameter-0-0"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "const",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TemplateTypeParmType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "type-parameter-0-0"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isDependent": true,
+// CHECK-NEXT: "isInstantiationDependent": true,
+// CHECK-NEXT: "depth": 0,
+// CHECK-NEXT: "index": 0,
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x0"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXBoolLiteralExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 823,
+// CHECK-NEXT: "line": 29,
+// CHECK-NEXT: "col": 52,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 823,
+// CHECK-NEXT: "col": 52,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "bool"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": true
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "refId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
diff --git a/clang/test/AST/ast-dump-template-name.cpp b/clang/test/AST/ast-dump-template-name.cpp
index acacdac857954..89ec06a08b616 100644
--- a/clang/test/AST/ast-dump-template-name.cpp
+++ b/clang/test/AST/ast-dump-template-name.cpp
@@ -11,8 +11,8 @@ namespace qualified {
// CHECK: Dumping qualified::TestQualified:
// CHECK-NEXT: TypeAliasDecl
-// CHECK-NEXT: `-ElaboratedType
-// CHECK-NEXT: `-TemplateSpecializationType
+// CHECK-NEXT: `-typeDetails: ElaboratedType
+// CHECK-NEXT: `-typeDetails: TemplateSpecializationType
// CHECK-NEXT: |-name: 'N' qualified
// CHECK-NEXT: | `-TypeAliasTemplateDecl {{.+}} N{{$}}
// CHECK-NEXT: |-TemplateArgument template 'foo::A':'qualified::foo::A' qualified{{$}}
@@ -27,8 +27,8 @@ namespace dependent {
// CHECK: Dumping dependent::B::TestDependent:
// CHECK-NEXT: TypeAliasDecl
-// CHECK-NEXT: `-ElaboratedType
-// CHECK-NEXT: `-TemplateSpecializationType
+// CHECK-NEXT: `-typeDetails: ElaboratedType
+// CHECK-NEXT: `-typeDetails: TemplateSpecializationType
// CHECK-NEXT: |-name: 'N' qualified
// CHECK-NEXT: | `-TypeAliasTemplateDecl
// CHECK-NEXT: |-TemplateArgument template 'T::template X':'type-parameter-0-0::template X' dependent{{$}}
@@ -46,11 +46,11 @@ namespace subst {
// CHECK: Dumping subst::TestSubst:
// CHECK-NEXT: TypeAliasDecl
-// CHECK-NEXT: `-ElaboratedType
-// CHECK-NEXT: `-TypedefType
+// CHECK-NEXT: `-typeDetails: ElaboratedType
+// CHECK-NEXT: `-typeDetails: TypedefType
// CHECK-NEXT: |-TypeAlias
-// CHECK-NEXT: `-ElaboratedType
-// CHECK-NEXT: `-TemplateSpecializationType
+// CHECK-NEXT: `-typeDetails: ElaboratedType
+// CHECK-NEXT: `-typeDetails: TemplateSpecializationType
// CHECK-NEXT: |-name: 'C':'subst::B<subst::A>::C' qualified
// CHECK-NEXT: | `-ClassTemplateDecl {{.+}} C
// CHECK-NEXT: |-TemplateArgument template 'subst::A' subst index 0
diff --git a/clang/test/AST/ast-dump-templates.cpp b/clang/test/AST/ast-dump-templates.cpp
index 9fcafbcbcc46b..f39ad9a053b65 100644
--- a/clang/test/AST/ast-dump-templates.cpp
+++ b/clang/test/AST/ast-dump-templates.cpp
@@ -114,7 +114,7 @@ void func() {
C<Key>;
// DUMP: UnresolvedLookupExpr {{.*}} '<dependent type>' lvalue (no ADL) = 'C'
// DUMP-NEXT: `-TemplateArgument type 'Key'
-// DUMP-NEXT: `-TemplateTypeParmType {{.*}} 'Key' dependent depth 0 index 0
+// DUMP-NEXT: `-typeDetails: TemplateTypeParmType {{.*}} 'Key' dependent depth 0 index 0
// DUMP-NEXT: `-TemplateTypeParm {{.*}} 'Key'
}
}
diff --git a/clang/test/AST/ast-dump-temporaries-json.cpp b/clang/test/AST/ast-dump-temporaries-json.cpp
index 0fd2762cee1a7..be874de07f1fa 100644
--- a/clang/test/AST/ast-dump-temporaries-json.cpp
+++ b/clang/test/AST/ast-dump-temporaries-json.cpp
@@ -1,448 +1,466 @@
-// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsyntax-only -ast-dump=json %s | FileCheck %s
-
-struct S {
- S() {}
- ~S() {}
-};
-
-void func(const int &);
-
-void BindTemp() {
- const S &s = S();
-}
-
-void MaterializeTemp() {
- const int &i = 1.0;
-
- float f = 1.0f;
- func(f);
-}
-
-// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
-// using --filters=ExprWithCleanups
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "ExprWithCleanups",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "cleanupsHaveSideEffects": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "MaterializeTemporaryExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "extendingDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "s",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const S &"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "storageDuration": "automatic",
-// CHECK-NEXT: "boundToLValueRef": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "NoOp",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXBindTemporaryExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "temp": "0x{{.*}}",
-// CHECK-NEXT: "dtor": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXDestructorDecl",
-// CHECK-NEXT: "name": "~S",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void () noexcept"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXTemporaryObjectExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 16,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "ctorType": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "hadMultipleCandidates": true,
-// CHECK-NEXT: "constructionKind": "complete"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "ExprWithCleanups",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "MaterializeTemporaryExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "extendingDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "i",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int &"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "storageDuration": "automatic",
-// CHECK-NEXT: "boundToLValueRef": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "FloatingToIntegral",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FloatingLiteral",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 3
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "double"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "value": "1"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "ExprWithCleanups",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 18,
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CallExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (*)(const int &)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "FunctionToPointerDecay",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 3,
-// CHECK-NEXT: "tokLen": 4
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (const int &)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionDecl",
-// CHECK-NEXT: "name": "func",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (const int &)"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "MaterializeTemporaryExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "storageDuration": "full expression",
-// CHECK-NEXT: "boundToLValueRef": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "FloatingToIntegral",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 8,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "VarDecl",
-// CHECK-NEXT: "name": "f",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "float"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
+// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsyntax-only -ast-dump=json %s | FileCheck %s
+
+struct S {
+ S() {}
+ ~S() {}
+};
+
+void func(const int &);
+
+void BindTemp() {
+ const S &s = S();
+}
+
+void MaterializeTemp() {
+ const int &i = 1.0;
+
+ float f = 1.0f;
+ func(f);
+}
+
+// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
+// using --filters=ExprWithCleanups
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "ExprWithCleanups",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "cleanupsHaveSideEffects": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "MaterializeTemporaryExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "extendingDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "s",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const S &"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "storageDuration": "automatic",
+// CHECK-NEXT: "boundToLValueRef": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "NoOp",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXBindTemporaryExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "temp": "0x{{.*}}",
+// CHECK-NEXT: "dtor": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXDestructorDecl",
+// CHECK-NEXT: "name": "~S",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void () noexcept"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXTemporaryObjectExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 16,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "ctorType": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "hadMultipleCandidates": true,
+// CHECK-NEXT: "constructionKind": "complete"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "ExprWithCleanups",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "MaterializeTemporaryExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "extendingDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "i",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int &"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "storageDuration": "automatic",
+// CHECK-NEXT: "boundToLValueRef": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "FloatingToIntegral",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FloatingLiteral",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 3
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "double"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "value": "1"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "ExprWithCleanups",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "line": 18,
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CallExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (*)(const int &)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "FunctionToPointerDecay",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 3,
+// CHECK-NEXT: "tokLen": 4
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (const int &)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionDecl",
+// CHECK-NEXT: "name": "func",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (const int &)"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (const int &)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "",
+// CHECK-NEXT: "qualDetails": []
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "MaterializeTemporaryExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "storageDuration": "full expression",
+// CHECK-NEXT: "boundToLValueRef": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "FloatingToIntegral",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "float"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 8,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "float"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "VarDecl",
+// CHECK-NEXT: "name": "f",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "float"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "fpp"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
diff --git a/clang/test/AST/ast-dump-traits.cpp b/clang/test/AST/ast-dump-traits.cpp
index 3085e5883fd2e..14fa0dbd7c393 100644
--- a/clang/test/AST/ast-dump-traits.cpp
+++ b/clang/test/AST/ast-dump-traits.cpp
@@ -40,19 +40,19 @@ void test_unary_expr_or_type_trait() {
// CHECK-NEXT: | | `-EnumDecl {{.*}} <col:3, col:11> col:8{{( imported)?}} referenced E
// CHECK-NEXT: | |-CStyleCastExpr {{.*}} <line:13:3, col:21> 'void' <ToVoid>
// CHECK-NEXT: | | `-TypeTraitExpr {{.*}} <col:10, col:21> 'bool' __is_enum
-// CHECK-NEXT: | | `-ElaboratedType {{.*}} 'E' sugar
-// CHECK-NEXT: | | `-EnumType {{.*}} 'E'
+// CHECK-NEXT: | | `-typeDetails: ElaboratedType {{.*}} 'E' sugar
+// CHECK-NEXT: | | `-typeDetails: EnumType {{.*}} 'E'
// CHECK-NEXT: | | `-Enum {{.*}} 'E'
// CHECK-NEXT: | |-CStyleCastExpr {{.*}} <line:15:3, col:30> 'void' <ToVoid>
// CHECK-NEXT: | | `-TypeTraitExpr {{.*}} <col:10, col:30> 'bool' __is_same
-// CHECK-NEXT: | | |-BuiltinType {{.*}} 'int'
-// CHECK-NEXT: | | `-BuiltinType {{.*}} 'float'
+// CHECK-NEXT: | | |-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: | | `-typeDetails: BuiltinType {{.*}} 'float'
// CHECK-NEXT: | `-CStyleCastExpr {{.*}} <line:17:3, col:47> 'void' <ToVoid>
// CHECK-NEXT: | `-TypeTraitExpr {{.*}} <col:10, col:47> 'bool' __is_constructible
-// CHECK-NEXT: |-BuiltinType {{.*}} 'int'
-// CHECK-NEXT: |-BuiltinType {{.*}} 'int'
-// CHECK-NEXT: |-BuiltinType {{.*}} 'int'
-// CHECK-NEXT: `-BuiltinType {{.*}} 'int'
+// CHECK-NEXT: |-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: |-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: |-typeDetails: BuiltinType {{.*}} 'int'
+// CHECK-NEXT: `-typeDetails: BuiltinType {{.*}} 'int'
// CHECK-NEXT: |-FunctionDecl {{.*}} <line:20:1, line:23:1> line:20:6{{( imported)?}} test_array_type_trait 'void ()'
// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:30, line:23:1>
// CHECK-NEXT: | `-CStyleCastExpr {{.*}} <line:22:3, col:34> 'void' <ToVoid>
diff --git a/clang/test/AST/ast-dump-types-errors-json.cpp b/clang/test/AST/ast-dump-types-errors-json.cpp
index e15f8eeee20cc..305fc09a963dd 100644
--- a/clang/test/AST/ast-dump-types-errors-json.cpp
+++ b/clang/test/AST/ast-dump-types-errors-json.cpp
@@ -2,139 +2,145 @@
using TestContainsErrors = int[sizeof(undef())];
-// CHECK: "kind": "TypeAliasDecl",
-// CHECK-NEXT: "loc": {
+// CHECK: "kind": "TypeAliasDecl",
+// CHECK-NEXT: "loc": {
// CHECK-NEXT: "offset": {{[0-9]+}},
// CHECK-NEXT: "file": "{{.*}}",
// CHECK-NEXT: "line": 3,
// CHECK-NEXT: "col": 7,
// CHECK-NEXT: "tokLen": 18
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 5
// CHECK-NEXT: },
// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 47,
-// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 47,
+// CHECK-NEXT: "tokLen": 1
// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestContainsErrors",
-// CHECK-NEXT: "type": {
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestContainsErrors",
+// CHECK-NEXT: "type": {
// CHECK-NEXT: "qualType": "int[sizeof (<recovery-expr>(undef))]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DependentSizedArrayType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int[sizeof (<recovery-expr>(undef))]"
-// CHECK-NEXT: },
-// CHECK-NEXT: "containsErrors": true,
-// CHECK-NEXT: "isDependent": true,
-// CHECK-NEXT: "isInstantiationDependent": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DependentSizedArrayType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int[sizeof (<recovery-expr>(undef))]"
// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnaryExprOrTypeTraitExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 32,
-// CHECK-NEXT: "tokLen": 6
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 46,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned long"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "name": "sizeof",
-// CHECK-NEXT: "inner": [
+// CHECK-NEXT: "containsErrors": true,
+// CHECK-NEXT: "isDependent": true,
+// CHECK-NEXT: "isInstantiationDependent": true,
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "array"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParenExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 38,
-// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 46,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<dependent type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "RecoveryExpr",
-// CHECK-NEXT: "range": {
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UnaryExprOrTypeTraitExpr",
+// CHECK-NEXT: "range": {
// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 39,
-// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 32,
+// CHECK-NEXT: "tokLen": 6
// CHECK-NEXT: },
// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 45,
-// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 46,
+// CHECK-NEXT: "tokLen": 1
// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<dependent type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "inner": [
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned long"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "name": "sizeof",
+// CHECK-NEXT: "inner": [
// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UnresolvedLookupExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 39,
-// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParenExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 38,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 46,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<dependent type>"
// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 39,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "<overloaded function type>"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "usesADL": true,
-// CHECK-NEXT: "name": "undef",
-// CHECK-NEXT: "lookups": []
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecoveryExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 39,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 45,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<dependent type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UnresolvedLookupExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 39,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 39,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "<overloaded function type>"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "usesADL": true,
+// CHECK-NEXT: "name": "undef",
+// CHECK-NEXT: "lookups": []
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
+// CHECK-NEXT: ]
// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
+// CHECK-NEXT: ]
// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
+// CHECK-NEXT: ]
\ No newline at end of file
diff --git a/clang/test/AST/ast-dump-types-json.cpp b/clang/test/AST/ast-dump-types-json.cpp
index c1bb9266fa869..648a2fef7eeb1 100644
--- a/clang/test/AST/ast-dump-types-json.cpp
+++ b/clang/test/AST/ast-dump-types-json.cpp
@@ -1,538 +1,642 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -fsyntax-only -ast-dump=json -ast-dump-filter Test %s | FileCheck %s
-
-namespace NS {
-struct S {};
-}
-
-struct T {
- int I;
- void F();
-};
-
-typedef struct T TestElaboratedType1;
-typedef NS::S TestElaboratedType2;
-
-#define CDECL __attribute__((cdecl))
-typedef void (CDECL *TestMacroQualifiedType)();
-
-typedef void (T::* TestMemberFunctionPointerType)();
-typedef int T::*TestMemberDataPointerType;
-
-typedef int TestQualTypePrinting(const char* c);
-
-typedef int TestUsingShadowDeclType;
-namespace TestNamespaceWithUsingShadowType {
-using ::TestUsingShadowDeclType;
-}
-
-// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "TypedefDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 12,
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 7
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 18,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestElaboratedType1",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "T",
-// CHECK-NEXT: "qualType": "struct T"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ElaboratedType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "struct T"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "RecordType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "T"
-// CHECK-NEXT: },
-// CHECK-NEXT: "decl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "name": "T"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "TypedefDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 13,
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 7
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 15,
-// CHECK-NEXT: "tokLen": 19
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestElaboratedType2",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NS::S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ElaboratedType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NS::S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "qualifier": "NS::",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "RecordType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "NS::S"
-// CHECK-NEXT: },
-// CHECK-NEXT: "decl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "name": "S"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "TypedefDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 16,
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 22
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 7
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 22
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestMacroQualifiedType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "CDECL void (*)()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "PointerType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "CDECL void (*)()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "MacroQualifiedType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "CDECL void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "macroName": "CDECL",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "AttributedType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void () __attribute__((cdecl))"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParenType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionProtoType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "cc": "cdecl",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "TypedefDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 18,
-// CHECK-NEXT: "col": 20,
-// CHECK-NEXT: "tokLen": 29
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 7
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 51,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestMemberFunctionPointerType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (T::*)()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "MemberPointerType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void (T::*)()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "isFunction": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "RecordType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "T"
-// CHECK-NEXT: },
-// CHECK-NEXT: "decl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "name": "T"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParenType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionProtoType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void ()"
-// CHECK-NEXT: },
-// CHECK-NEXT: "cc": "cdecl",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "void"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "TypedefDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 19,
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 25
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 7
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 17,
-// CHECK-NEXT: "tokLen": 25
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestMemberDataPointerType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int T::*"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "MemberPointerType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int T::*"
-// CHECK-NEXT: },
-// CHECK-NEXT: "isData": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "RecordType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "T"
-// CHECK-NEXT: },
-// CHECK-NEXT: "decl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "CXXRecordDecl",
-// CHECK-NEXT: "name": "T"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "TypedefDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 21,
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 20
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 7
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 47,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestQualTypePrinting",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int (const char *)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "FunctionProtoType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int (const char *)"
-// CHECK-NEXT: },
-// CHECK-NEXT: "cc": "cdecl",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "PointerType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const char *"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "QualType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "const char"
-// CHECK-NEXT: },
-// CHECK-NEXT: "qualifiers": "const",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "char"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "TypedefDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 23,
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 23
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 7
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 13,
-// CHECK-NEXT: "tokLen": 23
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestUsingShadowDeclType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "BuiltinType",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK-NOT: {{^}}Dumping
-// CHECK: "kind": "NamespaceDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "file": "{{.*}}",
-// CHECK-NEXT: "line": 24,
-// CHECK-NEXT: "col": 11,
-// CHECK-NEXT: "tokLen": 32
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 9
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 26,
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "TestNamespaceWithUsingShadowType",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UsingDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "line": 25,
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 23
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 1,
-// CHECK-NEXT: "tokLen": 5
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 23
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "name": "::TestUsingShadowDeclType"
-// CHECK-NEXT: },
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "UsingShadowDecl",
-// CHECK-NEXT: "loc": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 23
-// CHECK-NEXT: },
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 23
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 9,
-// CHECK-NEXT: "tokLen": 23
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "isImplicit": true,
-// CHECK-NEXT: "target": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "TypedefDecl",
-// CHECK-NEXT: "name": "TestUsingShadowDeclType"
-// CHECK-NEXT: },
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x0"
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
+// RUN: %clang_cc1 -triple x86_64-unknown-unknown -fsyntax-only -ast-dump=json -ast-dump-filter Test %s | FileCheck %s
+
+namespace NS {
+struct S {};
+}
+
+struct T {
+ int I;
+ void F();
+};
+
+typedef struct T TestElaboratedType1;
+typedef NS::S TestElaboratedType2;
+
+#define CDECL __attribute__((cdecl))
+typedef void (CDECL *TestMacroQualifiedType)();
+
+typedef void (T::* TestMemberFunctionPointerType)();
+typedef int T::*TestMemberDataPointerType;
+
+typedef int TestQualTypePrinting(const char* c);
+
+typedef int TestUsingShadowDeclType;
+namespace TestNamespaceWithUsingShadowType {
+using ::TestUsingShadowDeclType;
+}
+
+// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "TypedefDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 215,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 12,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 198,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 7
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 215,
+// CHECK-NEXT: "col": 18,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestElaboratedType1",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "T",
+// CHECK-NEXT: "qualType": "struct T"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ElaboratedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "struct T"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "T"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "T"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "TypedefDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 251,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 13,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 237,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 7
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 251,
+// CHECK-NEXT: "col": 15,
+// CHECK-NEXT: "tokLen": 19
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestElaboratedType2",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NS::S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ElaboratedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NS::S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifier": "NS::",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "NS::S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "S"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "TypedefDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 334,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 16,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 22
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 313,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 7
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 334,
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 22
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestMacroQualifiedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "CDECL void (*)()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "PointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "CDECL void (*)()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr",
+// CHECK-NEXT: "func_ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "MacroQualifiedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "CDECL void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "macroName": "CDECL",
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "AttributedType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void () __attribute__((cdecl))"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParenType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionProtoType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "cc": "cdecl",
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "void"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "cc": "cdecl",
+// CHECK-NEXT: "returnTypeDetail": {
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "void"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "TypedefDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 383,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 18,
+// CHECK-NEXT: "col": 20,
+// CHECK-NEXT: "tokLen": 29
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 364,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 7
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 414,
+// CHECK-NEXT: "col": 51,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestMemberFunctionPointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (T::*)()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "MemberPointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void (T::*)()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isFunction": true,
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "T"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "T"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParenType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionProtoType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void ()"
+// CHECK-NEXT: },
+// CHECK-NEXT: "cc": "cdecl",
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "void"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "cc": "cdecl",
+// CHECK-NEXT: "returnTypeDetail": {
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "void"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "TypedefDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 434,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 19,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 25
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 418,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 7
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 434,
+// CHECK-NEXT: "col": 17,
+// CHECK-NEXT: "tokLen": 25
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestMemberDataPointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int T::*"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "MemberPointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int T::*"
+// CHECK-NEXT: },
+// CHECK-NEXT: "isData": true,
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "RecordType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "T"
+// CHECK-NEXT: },
+// CHECK-NEXT: "decl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "CXXRecordDecl",
+// CHECK-NEXT: "name": "T"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "struct"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "TypedefDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 476,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 21,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 20
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 464,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 7
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 510,
+// CHECK-NEXT: "col": 47,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestQualTypePrinting",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int (const char *)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "FunctionProtoType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int (const char *)"
+// CHECK-NEXT: },
+// CHECK-NEXT: "cc": "cdecl",
+// CHECK-NEXT: "qualDetails": [],
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "cc": "cdecl",
+// CHECK-NEXT: "returnTypeDetail": {
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "PointerType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const char *"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "ptr"
+// CHECK-NEXT: ],
+// CHECK-NEXT: "qualTypeDetail": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "QualType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "const char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualifiers": "const",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "TypedefDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 528,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 23,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 23
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 516,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 7
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 528,
+// CHECK-NEXT: "col": 13,
+// CHECK-NEXT: "tokLen": 23
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestUsingShadowDeclType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "BuiltinType",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "NamespaceDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 564,
+// CHECK-NEXT: "file": "{{.*}}",
+// CHECK-NEXT: "line": 24,
+// CHECK-NEXT: "col": 11,
+// CHECK-NEXT: "tokLen": 32
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 554,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 9
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 634,
+// CHECK-NEXT: "line": 26,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "TestNamespaceWithUsingShadowType",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UsingDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 608,
+// CHECK-NEXT: "line": 25,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 23
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 600,
+// CHECK-NEXT: "col": 1,
+// CHECK-NEXT: "tokLen": 5
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 608,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 23
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "name": "::TestUsingShadowDeclType"
+// CHECK-NEXT: },
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "UsingShadowDecl",
+// CHECK-NEXT: "loc": {
+// CHECK-NEXT: "offset": 608,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 23
+// CHECK-NEXT: },
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": 608,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 23
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": 608,
+// CHECK-NEXT: "col": 9,
+// CHECK-NEXT: "tokLen": 23
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "isImplicit": true,
+// CHECK-NEXT: "target": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "TypedefDecl",
+// CHECK-NEXT: "name": "TestUsingShadowDeclType"
+// CHECK-NEXT: },
+// CHECK-NEXT: "typeDetails": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x0"
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
diff --git a/clang/test/AST/ast-dump-using-template.cpp b/clang/test/AST/ast-dump-using-template.cpp
index 75db5eb5a9d1c..dc7903b372fbd 100644
--- a/clang/test/AST/ast-dump-using-template.cpp
+++ b/clang/test/AST/ast-dump-using-template.cpp
@@ -19,8 +19,8 @@ using ns::S2;
template<typename T>
using A = S<T>;
// CHECK: TypeAliasDecl
-// CHECK-NEXT: `-ElaboratedType {{.*}} 'S<T>' sugar dependent
-// CHECK-NEXT: `-TemplateSpecializationType {{.*}} 'S<T>' dependent
+// CHECK-NEXT: `-typeDetails: ElaboratedType {{.*}} 'S<T>' sugar dependent
+// CHECK-NEXT: `-typeDetails: TemplateSpecializationType {{.*}} 'S<T>' dependent
// CHECK-NEXT: |-name: 'S':'ns::S' qualified
// CHECk-NEXT: | |-UsingShadowDecl {{.+}} ClassTemplate {{.+}} 'S'
@@ -28,14 +28,14 @@ using A = S<T>;
template <template <typename> class T> class X {};
using B = X<S>;
// CHECK: TypeAliasDecl
-// CHECK-NEXT: `-ElaboratedType {{.*}} 'X<S>' sugar
-// CHECK-NEXT: `-TemplateSpecializationType {{.*}} 'X<S>' sugar
+// CHECK-NEXT: `-typeDetails: ElaboratedType {{.*}} 'X<S>' sugar
+// CHECK-NEXT: `-typeDetails: TemplateSpecializationType {{.*}} 'X<S>' sugar
// CHECK-NEXT: |-name: 'X' qualified
// CHECK-NEXT: | `-ClassTemplateDecl {{.+}} X
// CHECK-NEXT: |-TemplateArgument template 'S':'ns::S' qualified
// CHECK-NEXT: | |-UsingShadowDecl {{.*}} implicit ClassTemplate {{.*}} 'S'
// CHECK-NEXT: | `-target: ClassTemplateDecl {{.*}} S
-// CHECK-NEXT: `-RecordType {{.*}} 'X<ns::S>'
+// CHECK-NEXT: `-typeDetails: RecordType {{.*}} 'X<ns::S>'
// CHECK-NEXT: `-ClassTemplateSpecialization {{.*}} 'X'
// TemplateName in DeducedTemplateSpecializationType.
@@ -43,8 +43,8 @@ S DeducedTemplateSpecializationT(123);
using C = decltype(DeducedTemplateSpecializationT);
// CHECK: DecltypeType {{.*}}
// CHECK-NEXT: |-DeclRefExpr {{.*}}
-// CHECK-NEXT: `-ElaboratedType {{.*}} 'S<int>' sugar
-// CHECK-NEXT: `-DeducedTemplateSpecializationType {{.*}} 'ns::S<int>' sugar
+// CHECK-NEXT: `-typeDetails: ElaboratedType {{.*}} 'S<int>' sugar
+// CHECK-NEXT: `-typeDetails: DeducedTemplateSpecializationType {{.*}} 'ns::S<int>' sugar
// CHECK-NEXT: |-name: 'S':'ns::S' qualified
// CHECK-NEXT: | |-UsingShadowDecl {{.+}} 'S'
@@ -52,7 +52,7 @@ S2 DeducedTemplateSpecializationT2(123);
using D = decltype(DeducedTemplateSpecializationT2);
// CHECK: DecltypeType {{.*}}
// CHECK-NEXT: |-DeclRefExpr {{.*}}
-// CHECK-NEXT: `-ElaboratedType {{.*}} 'S2<int>' sugar
-// CHECK-NEXT: `-DeducedTemplateSpecializationType {{.*}} 'S2<int>' sugar
+// CHECK-NEXT: `-typeDetails: ElaboratedType {{.*}} 'S2<int>' sugar
+// CHECK-NEXT: `-typeDetails: DeducedTemplateSpecializationType {{.*}} 'S2<int>' sugar
// CHECK-NEXT: |-name: 'S2':'ns::S2' qualified
//CHECk-NEXT: | |-UsingShadowDecl {{.+}} ClassTemplate {{.+}} 'S2'
diff --git a/clang/test/AST/ast-dump-using.cpp b/clang/test/AST/ast-dump-using.cpp
index 8e5c60d3aabf4..30f1f09601e1c 100644
--- a/clang/test/AST/ast-dump-using.cpp
+++ b/clang/test/AST/ast-dump-using.cpp
@@ -9,19 +9,19 @@ using a::S;
// CHECK: UsingDecl {{.*}} a::S
// CHECK-NEXT: | `-NestedNameSpecifier Namespace {{.*}} 'a'
// CHECK-NEXT: UsingShadowDecl {{.*}} implicit CXXRecord {{.*}} 'S'
-// CHECK-NEXT: `-RecordType {{.*}} 'a::S'
+// CHECK-NEXT: `-typeDetails: RecordType {{.*}} 'a::S'
typedef S f; // to dump the introduced type
// CHECK: TypedefDecl
-// CHECK-NEXT: `-ElaboratedType {{.*}} 'S' sugar
-// CHECK-NEXT: `-UsingType [[TYPE_ADDR:.*]] 'a::S' sugar
+// CHECK-NEXT: `-typeDetails: ElaboratedType {{.*}} 'S' sugar
+// CHECK-NEXT: `-typeDetails: UsingType [[TYPE_ADDR:.*]] 'a::S' sugar
// CHECK-NEXT: |-UsingShadow [[SHADOW_ADDR:.*]] 'S'
-// CHECK-NEXT: `-RecordType {{.*}} 'a::S'
+// CHECK-NEXT: `-typeDetails: RecordType {{.*}} 'a::S'
typedef S e; // check the same UsingType is reused.
// CHECK: TypedefDecl
-// CHECK-NEXT: `-ElaboratedType {{.*}} 'S' sugar
-// CHECK-NEXT: `-UsingType [[TYPE_ADDR]] 'a::S' sugar
+// CHECK-NEXT: `-typeDetails: ElaboratedType {{.*}} 'S' sugar
+// CHECK-NEXT: `-typeDetails: UsingType [[TYPE_ADDR]] 'a::S' sugar
// CHECK-NEXT: |-UsingShadow [[SHADOW_ADDR]] 'S'
-// CHECK-NEXT: `-RecordType {{.*}} 'a::S'
+// CHECK-NEXT: `-typeDetails: RecordType {{.*}} 'a::S'
using a::x;
void foo() {
diff --git a/clang/test/AST/ast-dump-wasm-attr-export.c b/clang/test/AST/ast-dump-wasm-attr-export.c
index d01c4816d65b0..406796799ade0 100644
--- a/clang/test/AST/ast-dump-wasm-attr-export.c
+++ b/clang/test/AST/ast-dump-wasm-attr-export.c
@@ -20,22 +20,22 @@ void yellow(void);
// CHECK: |-FunctionDecl {{.+}} used red 'void (void)'
// CHECK: | |-CompoundStmt {{.+}}
-// CHECK: | |-WebAssemblyExportNameAttr {{.+}} "export_red"
-// CHECK: | `-UsedAttr {{.+}} Implicit
+// CHECK: | |-attrDetails: WebAssemblyExportNameAttr {{.+}} "export_red"
+// CHECK: | `-attrDetails: UsedAttr {{.+}} Implicit
// CHECK: |-FunctionDecl {{.+}} used orange 'void (void)'
// CHECK: | |-CompoundStmt {{.+}}
-// CHECK: | |-WebAssemblyExportNameAttr {{.+}} "export_orange"
-// CHECK: | `-UsedAttr {{.+}} Implicit
+// CHECK: | |-attrDetails: WebAssemblyExportNameAttr {{.+}} "export_orange"
+// CHECK: | `-attrDetails: UsedAttr {{.+}} Implicit
// CHECK: |-FunctionDecl {{.+}} used yellow 'void (void)'
// CHECK: | |-CompoundStmt {{.+}}
-// CHECK: | |-WebAssemblyExportNameAttr {{.+}} "export_yellow"
-// CHECK: | `-UsedAttr {{.+}} Implicit
+// CHECK: | |-attrDetails: WebAssemblyExportNameAttr {{.+}} "export_yellow"
+// CHECK: | `-attrDetails: UsedAttr {{.+}} Implicit
// CHECK: |-FunctionDecl {{.+}} used red 'void (void)'
-// CHECK: | |-UsedAttr {{.+}} Inherited Implicit
-// CHECK: | `-WebAssemblyExportNameAttr {{.+}} Inherited "export_red"
+// CHECK: | |-attrDetails: UsedAttr {{.+}} Inherited Implicit
+// CHECK: | `-attrDetails: WebAssemblyExportNameAttr {{.+}} Inherited "export_red"
// CHECK: |-FunctionDecl {{.+}} used orange 'void (void)'
-// CHECK: | |-UsedAttr {{.+}} Inherited Implicit
-// CHECK: | `-WebAssemblyExportNameAttr {{.+}} Inherited "export_orange"
+// CHECK: | |-attrDetails: UsedAttr {{.+}} Inherited Implicit
+// CHECK: | `-attrDetails: WebAssemblyExportNameAttr {{.+}} Inherited "export_orange"
// CHECK: `-FunctionDecl {{.+}} used yellow 'void (void)'
-// CHECK: |-UsedAttr {{.+}} Inherited Implicit
-// CHECK: `-WebAssemblyExportNameAttr {{.+}} Inherited "export_yellow"
+// CHECK: |-attrDetails: UsedAttr {{.+}} Inherited Implicit
+// CHECK: `-attrDetails: WebAssemblyExportNameAttr {{.+}} Inherited "export_yellow"
diff --git a/clang/test/AST/ast-dump-wasm-attr-import.c b/clang/test/AST/ast-dump-wasm-attr-import.c
index 122707e851b76..2bcc82303a4f1 100644
--- a/clang/test/AST/ast-dump-wasm-attr-import.c
+++ b/clang/test/AST/ast-dump-wasm-attr-import.c
@@ -25,20 +25,20 @@ void calls(void) {
}
// CHECK: |-FunctionDecl {{.+}} used red 'void (void)'
-// CHECK: | |-WebAssemblyImportNameAttr {{.+}} "import_red"
-// CHECK: | `-WebAssemblyImportModuleAttr {{.+}} "mod"
+// CHECK: | |-attrDetails: WebAssemblyImportNameAttr {{.+}} "import_red"
+// CHECK: | `-attrDetails: WebAssemblyImportModuleAttr {{.+}} "mod"
// CHECK: |-FunctionDecl {{.+}} used orange 'void (void)'
-// CHECK: | |-WebAssemblyImportNameAttr {{.+}} "import_orange"
-// CHECK: | `-WebAssemblyImportModuleAttr {{.+}} "mod"
+// CHECK: | |-attrDetails: WebAssemblyImportNameAttr {{.+}} "import_orange"
+// CHECK: | `-attrDetails: WebAssemblyImportModuleAttr {{.+}} "mod"
// CHECK: |-FunctionDecl {{.+}} used yellow 'void (void)'
-// CHECK: | |-WebAssemblyImportNameAttr {{.+}} "import_yellow"
-// CHECK: | `-WebAssemblyImportModuleAttr {{.+}} "mod"
+// CHECK: | |-attrDetails: WebAssemblyImportNameAttr {{.+}} "import_yellow"
+// CHECK: | `-attrDetails: WebAssemblyImportModuleAttr {{.+}} "mod"
// CHECK: |-FunctionDecl {{.+}} used red 'void (void)'
-// CHECK: | |-WebAssemblyImportNameAttr {{.+}} Inherited "import_red"
-// CHECK: | `-WebAssemblyImportModuleAttr {{.+}} Inherited "mod"
+// CHECK: | |-attrDetails: WebAssemblyImportNameAttr {{.+}} Inherited "import_red"
+// CHECK: | `-attrDetails: WebAssemblyImportModuleAttr {{.+}} Inherited "mod"
// CHECK: |-FunctionDecl {{.+}} used orange 'void (void)'
-// CHECK: | |-WebAssemblyImportNameAttr {{.+}} Inherited "import_orange"
-// CHECK: | `-WebAssemblyImportModuleAttr {{.+}} Inherited "mod"
+// CHECK: | |-attrDetails: WebAssemblyImportNameAttr {{.+}} Inherited "import_orange"
+// CHECK: | `-attrDetails: WebAssemblyImportModuleAttr {{.+}} Inherited "mod"
// CHECK: |-FunctionDecl {{.+}} used yellow 'void (void)'
-// CHECK: | |-WebAssemblyImportNameAttr {{.+}} Inherited "import_yellow"
-// CHECK: | `-WebAssemblyImportModuleAttr {{.+}} Inherited "mod"
+// CHECK: | |-attrDetails: WebAssemblyImportNameAttr {{.+}} Inherited "import_yellow"
+// CHECK: | `-attrDetails: WebAssemblyImportModuleAttr {{.+}} Inherited "mod"
diff --git a/clang/test/AST/attr-target-version.c b/clang/test/AST/attr-target-version.c
index 52ac0e61b5a59..fd43b03b9a55f 100644
--- a/clang/test/AST/attr-target-version.c
+++ b/clang/test/AST/attr-target-version.c
@@ -2,7 +2,7 @@
int __attribute__((target_version("sve2-bitperm + sha2"))) foov(void) { return 1; }
int __attribute__((target_clones(" lse + fp + sha3 "))) fooc(void) { return 2; }
-// CHECK: TargetVersionAttr
+// CHECK: attrDetails: TargetVersionAttr
// CHECK: sve2-bitperm + sha2
-// CHECK: TargetClonesAttr
+// CHECK: attrDetails: TargetClonesAttr
// CHECK: fp+lse+sha3 default
diff --git a/clang/test/AST/conditionally-trivial-smfs.cpp b/clang/test/AST/conditionally-trivial-smfs.cpp
index 1dc1f6c50efc9..3f7d1ef96791d 100644
--- a/clang/test/AST/conditionally-trivial-smfs.cpp
+++ b/clang/test/AST/conditionally-trivial-smfs.cpp
@@ -161,13 +161,13 @@ template struct MoveConstructorCheck<1>;
// CHECK: "kind": "ClassTemplateSpecializationDecl",
// CHECK: "definitionData": {
// CHECK-NEXT: "canConstDefaultInit": true,
-// LIN-NEXT: "canPassInRegisters": true,
+// LIN: "canPassInRegisters": true,
// CHECK-NEXT: "copyAssign": {
// CHECK: "hasUserDeclaredConstructor": true,
// CHECK-NEXT: "isEmpty": true,
// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTriviallyCopyable": true,
+// CHECK: "isTriviallyCopyable": true,
// CHECK-NEXT: "moveAssign": {},
// CHECK-NEXT: "moveCtor": {
// CHECK-NEXT: "exists": true,
@@ -221,7 +221,7 @@ template struct CopyAssignmentCheck<1>;
// CHECK: "kind": "ClassTemplateSpecializationDecl",
// CHECK: "definitionData": {
// CHECK-NEXT: "canConstDefaultInit": true,
-// CHECK-NEXT: "canPassInRegisters": true,
+// CHECK: "canPassInRegisters": true,
// CHECK-NEXT "copyAssign": {
// CHECK-NEXT "hasConstParam": true,
// CHECK-NEXT "implicitHasConstParam": true,
@@ -299,7 +299,7 @@ template struct MoveAssignmentCheck<1>;
// CHECK-NEXT: "isLiteral": true,
// CHECK-NEXT: "isPOD": true,
// CHECK-NEXT: "isStandardLayout": true,
-// CHECK-NEXT: "isTrivial": true,
+// CHECK: "isTrivial": true,
// CHECK-NEXT: "isTriviallyCopyable": true,
// CHECK-NEXT: "moveAssign": {
// CHECK-NEXT: "exists": true,
diff --git a/clang/test/AST/dump.cpp b/clang/test/AST/dump.cpp
index bbd388cbf0957..28d64e65dc933 100644
--- a/clang/test/AST/dump.cpp
+++ b/clang/test/AST/dump.cpp
@@ -18,26 +18,26 @@ int ga, gb;
// CHECK-NEXT: | | |-DeclRefExpr {{.+}} <col:47> 'int' lvalue Var {{.+}} 'omp_out' 'int'
// CHECK-NEXT: | | `-ImplicitCastExpr {{.+}} <col:58> 'int' <LValueToRValue>
// CHECK-NEXT: | | `-DeclRefExpr {{.+}} <col:58> 'int' lvalue Var {{.+}} 'omp_in' 'int'
-// CHECK-NEXT: | |-VarDecl {{.+}} <col:35> col:35 implicit used omp_in 'int'
-// CHECK-NEXT: | `-VarDecl {{.+}} <col:35> col:35 implicit used omp_out 'int'
-// CHECK-NEXT: |-OMPDeclareReductionDecl {{.+}} <col:40> col:40 operator+ 'char' combiner 0x{{.+}}
-// CHECK-NEXT: | |-CompoundAssignOperator {{.+}} <col:47, col:58> 'char' lvalue '*=' ComputeLHSTy='int' ComputeResultTy='int'
-// CHECK-NEXT: | | |-DeclRefExpr {{.+}} <col:47> 'char' lvalue Var {{.+}} 'omp_out' 'char'
-// CHECK-NEXT: | | `-ImplicitCastExpr {{.+}} <col:58> 'int' <IntegralCast>
-// CHECK-NEXT: | | `-ImplicitCastExpr {{.+}} <col:58> 'char' <LValueToRValue>
-// CHECK-NEXT: | | `-DeclRefExpr {{.+}} <col:58> 'char' lvalue Var {{.+}} 'omp_in' 'char'
-// CHECK-NEXT: | |-VarDecl {{.+}} <col:40> col:40 implicit used omp_in 'char'
-// CHECK-NEXT: | `-VarDecl {{.+}} <col:40> col:40 implicit used omp_out 'char'
-// CHECK-NEXT: |-OMPDeclareReductionDecl {{.+}} <line:[[@LINE-17]]:37> col:37 fun 'float' combiner 0x{{.+}} initializer 0x{{.+}}
-// CHECK-NEXT: | |-CompoundAssignOperator {{.+}} <col:45, col:56> 'float' lvalue '+=' ComputeLHSTy='float' ComputeResultTy='float'
-// CHECK-NEXT: | | |-DeclRefExpr {{.+}} <col:45> 'float' lvalue Var {{.+}} 'omp_out' 'float'
-// CHECK-NEXT: | | `-ImplicitCastExpr {{.+}} <col:56> 'float' <LValueToRValue>
-// CHECK-NEXT: | | `-DeclRefExpr {{.+}} <col:56> 'float' lvalue Var {{.+}} 'omp_in' 'float'
-// CHECK-NEXT: | |-BinaryOperator {{.+}} <col:87, col:98> 'float' '+'
-// CHECK-NEXT: | | |-ImplicitCastExpr {{.+}} <col:87> 'float' <LValueToRValue>
-// CHECK-NEXT: | | | `-DeclRefExpr {{.+}} <col:87> 'float' lvalue Var {{.+}} 'omp_orig' 'float'
-// CHECK-NEXT: | | `-ImplicitCastExpr {{.+}} <col:98> 'float' <IntegralToFloating>
-// CHECK-NEXT: | | `-IntegerLiteral {{.+}} <col:98> 'int' 15
+// CHECK: | |-VarDecl {{.+}} <col:35> col:35 implicit used omp_in 'int'
+// CHECK: | `-VarDecl {{.+}} <col:35> col:35 implicit used omp_out 'int'
+// CHECK: |-OMPDeclareReductionDecl {{.+}} <col:40> col:40 operator+ 'char' combiner 0x{{.+}}
+// CHECK: | |-CompoundAssignOperator {{.+}} <col:47, col:58> 'char' lvalue '*=' ComputeLHSTy='int' ComputeResultTy='int'
+// CHECK: | | |-DeclRefExpr {{.+}} <col:47> 'char' lvalue Var {{.+}} 'omp_out' 'char'
+// CHECK: | | `-ImplicitCastExpr {{.+}} <col:58> 'int' <IntegralCast>
+// CHECK: | | `-ImplicitCastExpr {{.+}} <col:58> 'char' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr {{.+}} <col:58> 'char' lvalue Var {{.+}} 'omp_in' 'char'
+// CHECK: | |-VarDecl {{.+}} <col:40> col:40 implicit used omp_in 'char'
+// CHECK: | `-VarDecl {{.+}} <col:40> col:40 implicit used omp_out 'char'
+// CHECK: |-OMPDeclareReductionDecl {{.+}} <line:[[@LINE-17]]:37> col:37 fun 'float' combiner 0x{{.+}} initializer 0x{{.+}}
+// CHECK: | |-CompoundAssignOperator {{.+}} <col:45, col:56> 'float' lvalue '+=' ComputeLHSTy='float' ComputeResultTy='float'
+// CHECK: | | |-DeclRefExpr {{.+}} <col:45> 'float' lvalue Var {{.+}} 'omp_out' 'float'
+// CHECK: | | `-ImplicitCastExpr {{.+}} <col:56> 'float' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr {{.+}} <col:56> 'float' lvalue Var {{.+}} 'omp_in' 'float'
+// CHECK: | |-BinaryOperator {{.+}} <col:87, col:98> 'float' '+'
+// CHECK: | | |-ImplicitCastExpr {{.+}} <col:87> 'float' <LValueToRValue>
+// CHECK: | | | `-DeclRefExpr {{.+}} <col:87> 'float' lvalue Var {{.+}} 'omp_orig' 'float'
+// CHECK: | | `-ImplicitCastExpr {{.+}} <col:98> 'float' <IntegralToFloating>
+// CHECK: | | `-IntegerLiteral {{.+}} <col:98> 'int' 15
struct S {
int a, b;
@@ -69,8 +69,8 @@ struct S {
void foo();
// CHECK: |-FunctionDecl {{.+}} <line:[[@LINE-2]]:1, col:10> col:6 foo 'void ()'
-// CHECK-NEXT: |-OMPDeclareSimdDeclAttr {{.+}} <line:[[@LINE-4]]:1, col:34> Implicit BS_Inbranch
-// CHECK: `-OMPDeclareSimdDeclAttr {{.+}} <line:[[@LINE-6]]:1, col:25> Implicit BS_Undefined
+// CHECK-NEXT: |-attrDetails: OMPDeclareSimdDeclAttr {{.+}} <line:[[@LINE-4]]:1, col:34> Implicit BS_Inbranch
+// CHECK: `-attrDetails: OMPDeclareSimdDeclAttr {{.+}} <line:[[@LINE-6]]:1, col:25> Implicit BS_Undefined
#pragma omp declare target
int bar() {
@@ -83,7 +83,7 @@ int bar() {
// CHECK-NEXT: |-CompoundStmt {{.+}} <col:11, line:[[@LINE-4]]:1>
// CHECK-NEXT: | |-DeclStmt {{.+}} <line:[[@LINE-7]]:3, col:8>
// CHECK-NEXT: | | `-VarDecl {{.+}} <col:3, col:7> col:7 used f 'int'
-// CHECK-NEXT: | `-ReturnStmt {{.+}} <line:[[@LINE-8]]:3, col:10>
-// CHECK-NEXT: | `-ImplicitCastExpr {{.+}} <col:10> 'int' <LValueToRValue>
-// CHECK-NEXT: | `-DeclRefExpr {{.+}} <col:10> 'int' lvalue Var {{.+}} 'f' 'int'
-// CHECK-NEXT: `-OMPDeclareTargetDeclAttr {{.+}} <line:75:21> Implicit MT_To DT_Any 1
+// CHECK: | `-ReturnStmt {{.+}} <line:[[@LINE-8]]:3, col:10>
+// CHECK: | `-ImplicitCastExpr {{.+}} <col:10> 'int' <LValueToRValue>
+// CHECK: | `-DeclRefExpr {{.+}} <col:10> 'int' lvalue Var {{.+}} 'f' 'int'
+// CHECK: `-attrDetails: OMPDeclareTargetDeclAttr {{.+}} <line:75:21> Implicit MT_To DT_Any 1
diff --git a/clang/test/AST/fixed_point.c b/clang/test/AST/fixed_point.c
index 62511ba701fea..574fb97b952ff 100644
--- a/clang/test/AST/fixed_point.c
+++ b/clang/test/AST/fixed_point.c
@@ -54,41 +54,41 @@ _Sat _Fract sat_fract;
_Sat long _Fract sat_long_fract;
//CHECK: |-VarDecl {{.*}} s_short_accum 'short _Accum'
-//CHECK-NEXT: |-VarDecl {{.*}} s_accum '_Accum'
-//CHECK-NEXT: |-VarDecl {{.*}} s_long_accum 'long _Accum'
-//CHECK-NEXT: |-VarDecl {{.*}} u_short_accum 'unsigned short _Accum'
-//CHECK-NEXT: |-VarDecl {{.*}} u_accum 'unsigned _Accum'
-//CHECK-NEXT: |-VarDecl {{.*}} u_long_accum 'unsigned long _Accum'
-//CHECK-NEXT: |-VarDecl {{.*}} s_short_fract 'short _Fract'
-//CHECK-NEXT: |-VarDecl {{.*}} s_fract '_Fract'
-//CHECK-NEXT: |-VarDecl {{.*}} s_long_fract 'long _Fract'
-//CHECK-NEXT: |-VarDecl {{.*}} u_short_fract 'unsigned short _Fract'
-//CHECK-NEXT: |-VarDecl {{.*}} u_fract 'unsigned _Fract'
-//CHECK-NEXT: |-VarDecl {{.*}} u_long_fract 'unsigned long _Fract'
-//CHECK-NEXT: |-VarDecl {{.*}} short_accum 'short _Accum'
-//CHECK-NEXT: |-VarDecl {{.*}} accum '_Accum'
-//CHECK-NEXT: |-VarDecl {{.*}} long_accum 'long _Accum'
-//CHECK-NEXT: |-VarDecl {{.*}} short_fract 'short _Fract'
-//CHECK-NEXT: |-VarDecl {{.*}} fract '_Fract'
-//CHECK-NEXT: |-VarDecl {{.*}} long_fract 'long _Fract'
-//CHECK-NEXT: |-VarDecl {{.*}} sat_s_short_accum '_Sat short _Accum'
-//CHECK-NEXT: |-VarDecl {{.*}} sat_s_accum '_Sat _Accum'
-//CHECK-NEXT: |-VarDecl {{.*}} sat_s_long_accum '_Sat long _Accum'
-//CHECK-NEXT: |-VarDecl {{.*}} sat_u_short_accum '_Sat unsigned short _Accum'
-//CHECK-NEXT: |-VarDecl {{.*}} sat_u_accum '_Sat unsigned _Accum'
-//CHECK-NEXT: |-VarDecl {{.*}} sat_u_long_accum '_Sat unsigned long _Accum'
-//CHECK-NEXT: |-VarDecl {{.*}} sat_s_short_fract '_Sat short _Fract'
-//CHECK-NEXT: |-VarDecl {{.*}} sat_s_fract '_Sat _Fract'
-//CHECK-NEXT: |-VarDecl {{.*}} sat_s_long_fract '_Sat long _Fract'
-//CHECK-NEXT: |-VarDecl {{.*}} sat_u_short_fract '_Sat unsigned short _Fract'
-//CHECK-NEXT: |-VarDecl {{.*}} sat_u_fract '_Sat unsigned _Fract'
-//CHECK-NEXT: |-VarDecl {{.*}} sat_u_long_fract '_Sat unsigned long _Fract'
-//CHECK-NEXT: |-VarDecl {{.*}} sat_short_accum '_Sat short _Accum'
-//CHECK-NEXT: |-VarDecl {{.*}} sat_accum '_Sat _Accum'
-//CHECK-NEXT: |-VarDecl {{.*}} sat_long_accum '_Sat long _Accum'
-//CHECK-NEXT: |-VarDecl {{.*}} sat_short_fract '_Sat short _Fract'
-//CHECK-NEXT: |-VarDecl {{.*}} sat_fract '_Sat _Fract'
-//CHECK-NEXT: |-VarDecl {{.*}} sat_long_fract '_Sat long _Fract'
+//CHECK: |-VarDecl {{.*}} s_accum '_Accum'
+//CHECK: |-VarDecl {{.*}} s_long_accum 'long _Accum'
+//CHECK: |-VarDecl {{.*}} u_short_accum 'unsigned short _Accum'
+//CHECK: |-VarDecl {{.*}} u_accum 'unsigned _Accum'
+//CHECK: |-VarDecl {{.*}} u_long_accum 'unsigned long _Accum'
+//CHECK: |-VarDecl {{.*}} s_short_fract 'short _Fract'
+//CHECK: |-VarDecl {{.*}} s_fract '_Fract'
+//CHECK: |-VarDecl {{.*}} s_long_fract 'long _Fract'
+//CHECK: |-VarDecl {{.*}} u_short_fract 'unsigned short _Fract'
+//CHECK: |-VarDecl {{.*}} u_fract 'unsigned _Fract'
+//CHECK: |-VarDecl {{.*}} u_long_fract 'unsigned long _Fract'
+//CHECK: |-VarDecl {{.*}} short_accum 'short _Accum'
+//CHECK: |-VarDecl {{.*}} accum '_Accum'
+//CHECK: |-VarDecl {{.*}} long_accum 'long _Accum'
+//CHECK: |-VarDecl {{.*}} short_fract 'short _Fract'
+//CHECK: |-VarDecl {{.*}} fract '_Fract'
+//CHECK: |-VarDecl {{.*}} long_fract 'long _Fract'
+//CHECK: |-VarDecl {{.*}} sat_s_short_accum '_Sat short _Accum'
+//CHECK: |-VarDecl {{.*}} sat_s_accum '_Sat _Accum'
+//CHECK: |-VarDecl {{.*}} sat_s_long_accum '_Sat long _Accum'
+//CHECK: |-VarDecl {{.*}} sat_u_short_accum '_Sat unsigned short _Accum'
+//CHECK: |-VarDecl {{.*}} sat_u_accum '_Sat unsigned _Accum'
+//CHECK: |-VarDecl {{.*}} sat_u_long_accum '_Sat unsigned long _Accum'
+//CHECK: |-VarDecl {{.*}} sat_s_short_fract '_Sat short _Fract'
+//CHECK: |-VarDecl {{.*}} sat_s_fract '_Sat _Fract'
+//CHECK: |-VarDecl {{.*}} sat_s_long_fract '_Sat long _Fract'
+//CHECK: |-VarDecl {{.*}} sat_u_short_fract '_Sat unsigned short _Fract'
+//CHECK: |-VarDecl {{.*}} sat_u_fract '_Sat unsigned _Fract'
+//CHECK: |-VarDecl {{.*}} sat_u_long_fract '_Sat unsigned long _Fract'
+//CHECK: |-VarDecl {{.*}} sat_short_accum '_Sat short _Accum'
+//CHECK: |-VarDecl {{.*}} sat_accum '_Sat _Accum'
+//CHECK: |-VarDecl {{.*}} sat_long_accum '_Sat long _Accum'
+//CHECK: |-VarDecl {{.*}} sat_short_fract '_Sat short _Fract'
+//CHECK: |-VarDecl {{.*}} sat_fract '_Sat _Fract'
+//CHECK: |-VarDecl {{.*}} sat_long_fract '_Sat long _Fract'
#define MIX_TYPE_SPEC(SPEC, SIGN, SIZE, ID) \
SPEC SIGN SIZE _Accum ID; \
@@ -106,20 +106,20 @@ MIX_VOLATILE(signed, short, vol_s_short_accum)
MIX_ATOMIC(signed, short, atm_s_short_accum)
MIX_CONST(signed, short, const_s_short_accum)
-// CHECK-NEXT: |-VarDecl {{.*}} vol_s_short_accum 'volatile short _Accum'
-// CHECK-NEXT: |-VarDecl {{.*}} vol_s_short_accum2 'volatile short _Accum'
-// CHECK-NEXT: |-VarDecl {{.*}} vol_s_short_accum3 'volatile short _Accum'
-// CHECK-NEXT: |-VarDecl {{.*}} vol_s_short_accum4 'volatile short _Accum'
+// CHECK: |-VarDecl {{.*}} vol_s_short_accum 'volatile short _Accum'
+// CHECK: |-VarDecl {{.*}} vol_s_short_accum2 'volatile short _Accum'
+// CHECK: |-VarDecl {{.*}} vol_s_short_accum3 'volatile short _Accum'
+// CHECK: |-VarDecl {{.*}} vol_s_short_accum4 'volatile short _Accum'
-// CHECK-NEXT: |-VarDecl {{.*}} atm_s_short_accum '_Atomic(short _Accum)'
-// CHECK-NEXT: |-VarDecl {{.*}} atm_s_short_accum2 '_Atomic(short _Accum)'
-// CHECK-NEXT: |-VarDecl {{.*}} atm_s_short_accum3 '_Atomic(short _Accum)'
-// CHECK-NEXT: |-VarDecl {{.*}} atm_s_short_accum4 '_Atomic(short _Accum)'
+// CHECK: |-VarDecl {{.*}} atm_s_short_accum '_Atomic(short _Accum)'
+// CHECK: |-VarDecl {{.*}} atm_s_short_accum2 '_Atomic(short _Accum)'
+// CHECK: |-VarDecl {{.*}} atm_s_short_accum3 '_Atomic(short _Accum)'
+// CHECK: |-VarDecl {{.*}} atm_s_short_accum4 '_Atomic(short _Accum)'
-// CHECK-NEXT: |-VarDecl {{.*}} const_s_short_accum 'const short _Accum'
-// CHECK-NEXT: |-VarDecl {{.*}} const_s_short_accum2 'const short _Accum'
-// CHECK-NEXT: |-VarDecl {{.*}} const_s_short_accum3 'const short _Accum'
-// CHECK-NEXT: |-VarDecl {{.*}} const_s_short_accum4 'const short _Accum'
+// CHECK: |-VarDecl {{.*}} const_s_short_accum 'const short _Accum'
+// CHECK: |-VarDecl {{.*}} const_s_short_accum2 'const short _Accum'
+// CHECK: |-VarDecl {{.*}} const_s_short_accum3 'const short _Accum'
+// CHECK: |-VarDecl {{.*}} const_s_short_accum4 'const short _Accum'
/* Typedefs */
@@ -208,42 +208,42 @@ SatF_t SatF_type;
SatlF_t SatlF_type;
//CHECK: |-VarDecl {{.*}} SsA_type 'SsA_t':'short _Accum'
-//CHECK-NEXT: |-VarDecl {{.*}} SA_type 'SA_t':'_Accum'
-//CHECK-NEXT: |-VarDecl {{.*}} SlA_type 'SlA_t':'long _Accum'
-//CHECK-NEXT: |-VarDecl {{.*}} UsA_type 'UsA_t':'unsigned short _Accum'
-//CHECK-NEXT: |-VarDecl {{.*}} UA_type 'UA_t':'unsigned _Accum'
-//CHECK-NEXT: |-VarDecl {{.*}} UlA_type 'UlA_t':'unsigned long _Accum'
-//CHECK-NEXT: |-VarDecl {{.*}} SsF_type 'SsF_t':'short _Fract'
-//CHECK-NEXT: |-VarDecl {{.*}} SF_type 'SF_t':'_Fract'
-//CHECK-NEXT: |-VarDecl {{.*}} SlF_type 'SlF_t':'long _Fract'
-//CHECK-NEXT: |-VarDecl {{.*}} UsF_type 'UsF_t':'unsigned short _Fract'
-//CHECK-NEXT: |-VarDecl {{.*}} UF_type 'UF_t':'unsigned _Fract'
-//CHECK-NEXT: |-VarDecl {{.*}} UlF_type 'UlF_t':'unsigned long _Fract'
-//CHECK-NEXT: |-VarDecl {{.*}} sA_type 'sA_t':'short _Accum'
-//CHECK-NEXT: |-VarDecl {{.*}} A_type 'A_t':'_Accum'
-//CHECK-NEXT: |-VarDecl {{.*}} lA_type 'lA_t':'long _Accum'
-//CHECK-NEXT: |-VarDecl {{.*}} sF_type 'sF_t':'short _Fract'
-//CHECK-NEXT: |-VarDecl {{.*}} F_type 'F_t':'_Fract'
-//CHECK-NEXT: |-VarDecl {{.*}} lF_type 'lF_t':'long _Fract'
-
-//CHECK-NEXT: |-VarDecl {{.*}} SatSsA_type 'SatSsA_t':'_Sat short _Accum'
-//CHECK-NEXT: |-VarDecl {{.*}} SatSA_type 'SatSA_t':'_Sat _Accum'
-//CHECK-NEXT: |-VarDecl {{.*}} SatSlA_type 'SatSlA_t':'_Sat long _Accum'
-//CHECK-NEXT: |-VarDecl {{.*}} SatUsA_type 'SatUsA_t':'_Sat unsigned short _Accum'
-//CHECK-NEXT: |-VarDecl {{.*}} SatUA_type 'SatUA_t':'_Sat unsigned _Accum'
-//CHECK-NEXT: |-VarDecl {{.*}} SatUlA_type 'SatUlA_t':'_Sat unsigned long _Accum'
-//CHECK-NEXT: |-VarDecl {{.*}} SatSsF_type 'SatSsF_t':'_Sat short _Fract'
-//CHECK-NEXT: |-VarDecl {{.*}} SatSF_type 'SatSF_t':'_Sat _Fract'
-//CHECK-NEXT: |-VarDecl {{.*}} SatSlF_type 'SatSlF_t':'_Sat long _Fract'
-//CHECK-NEXT: |-VarDecl {{.*}} SatUsF_type 'SatUsF_t':'_Sat unsigned short _Fract'
-//CHECK-NEXT: |-VarDecl {{.*}} SatUF_type 'SatUF_t':'_Sat unsigned _Fract'
-//CHECK-NEXT: |-VarDecl {{.*}} SatUlF_type 'SatUlF_t':'_Sat unsigned long _Fract'
-//CHECK-NEXT: |-VarDecl {{.*}} SatsA_type 'SatsA_t':'_Sat short _Accum'
-//CHECK-NEXT: |-VarDecl {{.*}} SatA_type 'SatA_t':'_Sat _Accum'
-//CHECK-NEXT: |-VarDecl {{.*}} SatlA_type 'SatlA_t':'_Sat long _Accum'
-//CHECK-NEXT: |-VarDecl {{.*}} SatsF_type 'SatsF_t':'_Sat short _Fract'
-//CHECK-NEXT: |-VarDecl {{.*}} SatF_type 'SatF_t':'_Sat _Fract'
-//CHECK-NEXT: |-VarDecl {{.*}} SatlF_type 'SatlF_t':'_Sat long _Fract'
+//CHECK: |-VarDecl {{.*}} SA_type 'SA_t':'_Accum'
+//CHECK: |-VarDecl {{.*}} SlA_type 'SlA_t':'long _Accum'
+//CHECK: |-VarDecl {{.*}} UsA_type 'UsA_t':'unsigned short _Accum'
+//CHECK: |-VarDecl {{.*}} UA_type 'UA_t':'unsigned _Accum'
+//CHECK: |-VarDecl {{.*}} UlA_type 'UlA_t':'unsigned long _Accum'
+//CHECK: |-VarDecl {{.*}} SsF_type 'SsF_t':'short _Fract'
+//CHECK: |-VarDecl {{.*}} SF_type 'SF_t':'_Fract'
+//CHECK: |-VarDecl {{.*}} SlF_type 'SlF_t':'long _Fract'
+//CHECK: |-VarDecl {{.*}} UsF_type 'UsF_t':'unsigned short _Fract'
+//CHECK: |-VarDecl {{.*}} UF_type 'UF_t':'unsigned _Fract'
+//CHECK: |-VarDecl {{.*}} UlF_type 'UlF_t':'unsigned long _Fract'
+//CHECK: |-VarDecl {{.*}} sA_type 'sA_t':'short _Accum'
+//CHECK: |-VarDecl {{.*}} A_type 'A_t':'_Accum'
+//CHECK: |-VarDecl {{.*}} lA_type 'lA_t':'long _Accum'
+//CHECK: |-VarDecl {{.*}} sF_type 'sF_t':'short _Fract'
+//CHECK: |-VarDecl {{.*}} F_type 'F_t':'_Fract'
+//CHECK: |-VarDecl {{.*}} lF_type 'lF_t':'long _Fract'
+
+//CHECK: |-VarDecl {{.*}} SatSsA_type 'SatSsA_t':'_Sat short _Accum'
+//CHECK: |-VarDecl {{.*}} SatSA_type 'SatSA_t':'_Sat _Accum'
+//CHECK: |-VarDecl {{.*}} SatSlA_type 'SatSlA_t':'_Sat long _Accum'
+//CHECK: |-VarDecl {{.*}} SatUsA_type 'SatUsA_t':'_Sat unsigned short _Accum'
+//CHECK: |-VarDecl {{.*}} SatUA_type 'SatUA_t':'_Sat unsigned _Accum'
+//CHECK: |-VarDecl {{.*}} SatUlA_type 'SatUlA_t':'_Sat unsigned long _Accum'
+//CHECK: |-VarDecl {{.*}} SatSsF_type 'SatSsF_t':'_Sat short _Fract'
+//CHECK: |-VarDecl {{.*}} SatSF_type 'SatSF_t':'_Sat _Fract'
+//CHECK: |-VarDecl {{.*}} SatSlF_type 'SatSlF_t':'_Sat long _Fract'
+//CHECK: |-VarDecl {{.*}} SatUsF_type 'SatUsF_t':'_Sat unsigned short _Fract'
+//CHECK: |-VarDecl {{.*}} SatUF_type 'SatUF_t':'_Sat unsigned _Fract'
+//CHECK: |-VarDecl {{.*}} SatUlF_type 'SatUlF_t':'_Sat unsigned long _Fract'
+//CHECK: |-VarDecl {{.*}} SatsA_type 'SatsA_t':'_Sat short _Accum'
+//CHECK: |-VarDecl {{.*}} SatA_type 'SatA_t':'_Sat _Accum'
+//CHECK: |-VarDecl {{.*}} SatlA_type 'SatlA_t':'_Sat long _Accum'
+//CHECK: |-VarDecl {{.*}} SatsF_type 'SatsF_t':'_Sat short _Fract'
+//CHECK: |-VarDecl {{.*}} SatF_type 'SatF_t':'_Sat _Fract'
+//CHECK: |-VarDecl {{.*}} SatlF_type 'SatlF_t':'_Sat long _Fract'
// Fixed point literal exponent syntax
_Accum decexp1 = 1.575e1k;
@@ -259,28 +259,28 @@ _Accum hexexp4 = 0x30000P-10k;
_Accum zeroexp1 = 1e0k;
_Accum zeroexp2 = 1e-0k;
-//CHECK-NEXT: |-VarDecl {{.*}} decexp1 '_Accum' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 15.75
-//CHECK-NEXT: |-VarDecl {{.*}} decexp2 '_Accum' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 15.75
-//CHECK-NEXT: |-VarDecl {{.*}} decexp3 '_Accum' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 15.75
-//CHECK-NEXT: |-VarDecl {{.*}} decexp4 '_Accum' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 15.75
-
-//CHECK-NEXT: |-VarDecl {{.*}} hexexp1 '_Accum' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 192.0
-//CHECK-NEXT: |-VarDecl {{.*}} hexexp2 '_Accum' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 192.0
-//CHECK-NEXT: |-VarDecl {{.*}} hexexp3 '_Accum' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 192.0
-//CHECK-NEXT: |-VarDecl {{.*}} hexexp4 '_Accum' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 192.0
-
-//CHECK-NEXT: |-VarDecl {{.*}} zeroexp1 '_Accum' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 1.0
-//CHECK-NEXT: |-VarDecl {{.*}} zeroexp2 '_Accum' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 1.0
+//CHECK: |-VarDecl {{.*}} decexp1 '_Accum' cinit
+//CHECK: |-FixedPointLiteral {{.*}} '_Accum' 15.75
+//CHECK: |-VarDecl {{.*}} decexp2 '_Accum' cinit
+//CHECK: |-FixedPointLiteral {{.*}} '_Accum' 15.75
+//CHECK: |-VarDecl {{.*}} decexp3 '_Accum' cinit
+//CHECK: |-FixedPointLiteral {{.*}} '_Accum' 15.75
+//CHECK: |-VarDecl {{.*}} decexp4 '_Accum' cinit
+//CHECK: |-FixedPointLiteral {{.*}} '_Accum' 15.75
+
+//CHECK: |-VarDecl {{.*}} hexexp1 '_Accum' cinit
+//CHECK: |-FixedPointLiteral {{.*}} '_Accum' 192.0
+//CHECK: |-VarDecl {{.*}} hexexp2 '_Accum' cinit
+//CHECK: |-FixedPointLiteral {{.*}} '_Accum' 192.0
+//CHECK: |-VarDecl {{.*}} hexexp3 '_Accum' cinit
+//CHECK: |-FixedPointLiteral {{.*}} '_Accum' 192.0
+//CHECK: |-VarDecl {{.*}} hexexp4 '_Accum' cinit
+//CHECK: |-FixedPointLiteral {{.*}} '_Accum' 192.0
+
+//CHECK: |-VarDecl {{.*}} zeroexp1 '_Accum' cinit
+//CHECK: |-FixedPointLiteral {{.*}} '_Accum' 1.0
+//CHECK: |-VarDecl {{.*}} zeroexp2 '_Accum' cinit
+//CHECK: |-FixedPointLiteral {{.*}} '_Accum' 1.0
// Fixed point literal values
_Accum literal1 = 2.5k; // Precise decimal
@@ -297,20 +297,20 @@ _Accum literal7 = 1.11111k; // After some point after the radix, adding any mo
// This results in the same value being stored for
// the type.
-//CHECK-NEXT: |-VarDecl {{.*}} literal1 '_Accum' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 2.5
-//CHECK-NEXT: |-VarDecl {{.*}} literal2 '_Accum' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 0.0
-//CHECK-NEXT: |-VarDecl {{.*}} literal3 '_Accum' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 1.0999755859375
-//CHECK-NEXT: |-VarDecl {{.*}} literal4 '_Accum' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 1.1099853515625
-//CHECK-NEXT: |-VarDecl {{.*}} literal5 '_Accum' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 1.110992431640625
-//CHECK-NEXT: |-VarDecl {{.*}} literal6 '_Accum' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 1.111083984375
-//CHECK-NEXT: |-VarDecl {{.*}} literal7 '_Accum' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 1.111083984375
+//CHECK: |-VarDecl {{.*}} literal1 '_Accum' cinit
+//CHECK: |-FixedPointLiteral {{.*}} '_Accum' 2.5
+//CHECK: |-VarDecl {{.*}} literal2 '_Accum' cinit
+//CHECK: |-FixedPointLiteral {{.*}} '_Accum' 0.0
+//CHECK: |-VarDecl {{.*}} literal3 '_Accum' cinit
+//CHECK: |-FixedPointLiteral {{.*}} '_Accum' 1.0999755859375
+//CHECK: |-VarDecl {{.*}} literal4 '_Accum' cinit
+//CHECK: |-FixedPointLiteral {{.*}} '_Accum' 1.1099853515625
+//CHECK: |-VarDecl {{.*}} literal5 '_Accum' cinit
+//CHECK: |-FixedPointLiteral {{.*}} '_Accum' 1.110992431640625
+//CHECK: |-VarDecl {{.*}} literal6 '_Accum' cinit
+//CHECK: |-FixedPointLiteral {{.*}} '_Accum' 1.111083984375
+//CHECK: |-VarDecl {{.*}} literal7 '_Accum' cinit
+//CHECK: |-FixedPointLiteral {{.*}} '_Accum' 1.111083984375
long _Accum longaccumliteral = 0.99999999lk;
long _Accum longaccumliteral2 = 0.999999999lk;
@@ -319,43 +319,43 @@ long _Fract longfractliteral = 0.99999999lr;
long _Fract longfractliteral2 = 0.999999999lr;
long _Fract verylongfractliteral = 0.99999999999999999999999999lr;
-//CHECK-NEXT: |-VarDecl {{.*}} longaccumliteral 'long _Accum' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} 'long _Accum' 0.999999989755451679229736328125
-//CHECK-NEXT: |-VarDecl {{.*}} longaccumliteral2 'long _Accum' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} 'long _Accum' 0.9999999986030161380767822265625
-//CHECK-NEXT: |-VarDecl {{.*}} verylongaccumliteral 'long _Accum' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} 'long _Accum' 0.9999999995343387126922607421875
-//CHECK-NEXT: |-VarDecl {{.*}} longfractliteral 'long _Fract' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} 'long _Fract' 0.999999989755451679229736328125
-//CHECK-NEXT: |-VarDecl {{.*}} longfractliteral2 'long _Fract' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} 'long _Fract' 0.9999999986030161380767822265625
-//CHECK-NEXT: |-VarDecl {{.*}} verylongfractliteral 'long _Fract' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} 'long _Fract' 0.9999999995343387126922607421875
+//CHECK: |-VarDecl {{.*}} longaccumliteral 'long _Accum' cinit
+//CHECK: |-FixedPointLiteral {{.*}} 'long _Accum' 0.999999989755451679229736328125
+//CHECK: |-VarDecl {{.*}} longaccumliteral2 'long _Accum' cinit
+//CHECK: |-FixedPointLiteral {{.*}} 'long _Accum' 0.9999999986030161380767822265625
+//CHECK: |-VarDecl {{.*}} verylongaccumliteral 'long _Accum' cinit
+//CHECK: |-FixedPointLiteral {{.*}} 'long _Accum' 0.9999999995343387126922607421875
+//CHECK: |-VarDecl {{.*}} longfractliteral 'long _Fract' cinit
+//CHECK: |-FixedPointLiteral {{.*}} 'long _Fract' 0.999999989755451679229736328125
+//CHECK: |-VarDecl {{.*}} longfractliteral2 'long _Fract' cinit
+//CHECK: |-FixedPointLiteral {{.*}} 'long _Fract' 0.9999999986030161380767822265625
+//CHECK: |-VarDecl {{.*}} verylongfractliteral 'long _Fract' cinit
+//CHECK: |-FixedPointLiteral {{.*}} 'long _Fract' 0.9999999995343387126922607421875
unsigned _Accum uliteral1 = 2.5uk; // Unsigned
_Accum literal8 = -2.5k; // Negative
-//CHECK-NEXT: |-VarDecl {{.*}} uliteral1 'unsigned _Accum' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} 'unsigned _Accum' 2.5
-//CHECK-NEXT: |-VarDecl {{.*}} literal8 '_Accum' cinit
-//CHECK-NEXT: `-UnaryOperator {{.*}} '_Accum' prefix '-'
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 2.5
+//CHECK: |-VarDecl {{.*}} uliteral1 'unsigned _Accum' cinit
+//CHECK: |-FixedPointLiteral {{.*}} 'unsigned _Accum' 2.5
+//CHECK: |-VarDecl {{.*}} literal8 '_Accum' cinit
+//CHECK: |-UnaryOperator {{.*}} '_Accum' prefix '-'
+//CHECK: `-FixedPointLiteral {{.*}} '_Accum' 2.5
short _Accum literalexact1 = 0.9921875hk; // Exact value
_Accum literalexact2 = 0.999969482421875k;
-//CHECK-NEXT: |-VarDecl {{.*}} literalexact1 'short _Accum' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} 'short _Accum' 0.9921875
-//CHECK-NEXT: |-VarDecl {{.*}} literalexact2 '_Accum' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 0.999969482421875
+//CHECK: |-VarDecl {{.*}} literalexact1 'short _Accum' cinit
+//CHECK: |-FixedPointLiteral {{.*}} 'short _Accum' 0.9921875
+//CHECK: |-VarDecl {{.*}} literalexact2 '_Accum' cinit
+//CHECK: |-FixedPointLiteral {{.*}} '_Accum' 0.999969482421875
// Unfortunately we do not have enough space to store the exact decimal value of
// 0.9999999995343387126922607421875 ((1 << 31) - 1), but we can still use a
// large number of 9s to get the max fractional value.
long _Accum long_accum_max = 0.999999999999999999999999999lk;
-//CHECK-NEXT: |-VarDecl {{.*}} long_accum_max 'long _Accum' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} 'long _Accum' 0.9999999995343387126922607421875
+//CHECK: |-VarDecl {{.*}} long_accum_max 'long _Accum' cinit
+//CHECK: |-FixedPointLiteral {{.*}} 'long _Accum' 0.9999999995343387126922607421875
// Epsilon
short _Accum short_accum_eps = 0.0078125hk;
@@ -365,18 +365,18 @@ _Accum accum_eps2 = 0.000030517578124k;
long _Accum long_accum_eps = 0x1p-31lk;
long _Accum long_accum_eps2 = 0x0.99999999p-31lk;
-//CHECK-NEXT: |-VarDecl {{.*}} short_accum_eps 'short _Accum' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} 'short _Accum' 0.0078125
-//CHECK-NEXT: |-VarDecl {{.*}} short_accum_eps2 'short _Accum' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} 'short _Accum' 0.0
-//CHECK-NEXT: |-VarDecl {{.*}} accum_eps '_Accum' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 0.000030517578125
-//CHECK-NEXT: |-VarDecl {{.*}} accum_eps2 '_Accum' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 0.0
-//CHECK-NEXT: |-VarDecl {{.*}} long_accum_eps 'long _Accum' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} 'long _Accum' 0.0000000004656612873077392578125
-//CHECK-NEXT: |-VarDecl {{.*}} long_accum_eps2 'long _Accum' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} 'long _Accum' 0.0
+//CHECK: |-VarDecl {{.*}} short_accum_eps 'short _Accum' cinit
+//CHECK: |-FixedPointLiteral {{.*}} 'short _Accum' 0.0078125
+//CHECK: |-VarDecl {{.*}} short_accum_eps2 'short _Accum' cinit
+//CHECK: |-FixedPointLiteral {{.*}} 'short _Accum' 0.0
+//CHECK: |-VarDecl {{.*}} accum_eps '_Accum' cinit
+//CHECK: |-FixedPointLiteral {{.*}} '_Accum' 0.000030517578125
+//CHECK: |-VarDecl {{.*}} accum_eps2 '_Accum' cinit
+//CHECK: |-FixedPointLiteral {{.*}} '_Accum' 0.0
+//CHECK: |-VarDecl {{.*}} long_accum_eps 'long _Accum' cinit
+//CHECK: |-FixedPointLiteral {{.*}} 'long _Accum' 0.0000000004656612873077392578125
+//CHECK: |-VarDecl {{.*}} long_accum_eps2 'long _Accum' cinit
+//CHECK: |-FixedPointLiteral {{.*}} 'long _Accum' 0.0
// Fract literals can be one but evaluate to the respective Fract max
short _Fract short_fract_one = 1.0hr;
@@ -386,21 +386,21 @@ unsigned short _Fract u_short_fract_one = 1.0uhr;
unsigned _Fract u_fract_one = 1.0ur;
unsigned long _Fract u_long_fract_one = 1.0ulr;
-//CHECK-NEXT: |-VarDecl {{.*}} short_fract_one 'short _Fract' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} 'short _Fract' 0.9921875
-//CHECK-NEXT: |-VarDecl {{.*}} fract_one '_Fract' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Fract' 0.999969482421875
-//CHECK-NEXT: |-VarDecl {{.*}} long_fract_one 'long _Fract' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} 'long _Fract' 0.9999999995343387126922607421875
+//CHECK: |-VarDecl {{.*}} short_fract_one 'short _Fract' cinit
+//CHECK: |-FixedPointLiteral {{.*}} 'short _Fract' 0.9921875
+//CHECK: |-VarDecl {{.*}} fract_one '_Fract' cinit
+//CHECK: |-FixedPointLiteral {{.*}} '_Fract' 0.999969482421875
+//CHECK: |-VarDecl {{.*}} long_fract_one 'long _Fract' cinit
+//CHECK: |-FixedPointLiteral {{.*}} 'long _Fract' 0.9999999995343387126922607421875
-//CHECK-NEXT: |-VarDecl {{.*}} u_short_fract_one 'unsigned short _Fract' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} 'unsigned short _Fract' 0.99609375
-//CHECK-NEXT: |-VarDecl {{.*}} u_fract_one 'unsigned _Fract' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} 'unsigned _Fract' 0.9999847412109375
-//CHECK-NEXT: |-VarDecl {{.*}} u_long_fract_one 'unsigned long _Fract' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} 'unsigned long _Fract' 0.99999999976716935634613037109375
+//CHECK: |-VarDecl {{.*}} u_short_fract_one 'unsigned short _Fract' cinit
+//CHECK: |-FixedPointLiteral {{.*}} 'unsigned short _Fract' 0.99609375
+//CHECK: |-VarDecl {{.*}} u_fract_one 'unsigned _Fract' cinit
+//CHECK: |-FixedPointLiteral {{.*}} 'unsigned _Fract' 0.9999847412109375
+//CHECK: |-VarDecl {{.*}} u_long_fract_one 'unsigned long _Fract' cinit
+//CHECK: |-FixedPointLiteral {{.*}} 'unsigned long _Fract' 0.99999999976716935634613037109375
_Accum literallast = 1.0k; // One
-//CHECK-NEXT: `-VarDecl {{.*}} literallast '_Accum' cinit
-//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 1.0
+//CHECK: `-VarDecl {{.*}} literallast '_Accum' cinit
+//CHECK: |-FixedPointLiteral {{.*}} '_Accum' 1.0
diff --git a/clang/test/AST/float16.cpp b/clang/test/AST/float16.cpp
index a9e1144cf0958..4a6d5c748e539 100644
--- a/clang/test/AST/float16.cpp
+++ b/clang/test/AST/float16.cpp
@@ -29,46 +29,83 @@ namespace {
}
}
-//CHECK: |-NamespaceDecl
-//CHECK-NEXT: | |-VarDecl {{.*}} f1n '_Float16'
-//CHECK-NEXT: | |-VarDecl {{.*}} f2n '_Float16' cinit
-//CHECK-NEXT: | | `-FloatingLiteral {{.*}} '_Float16' 3.300000e+01
-//CHECK-NEXT: | |-VarDecl {{.*}} arr1n '_Float16[10]'
-//CHECK-NEXT: | |-VarDecl {{.*}} arr2n '_Float16[3]' cinit
-//CHECK-NEXT: | | `-InitListExpr {{.*}} '_Float16[3]'
-//CHECK-NEXT: | | |-ImplicitCastExpr {{.*}} '_Float16' <FloatingCast>
-//CHECK-NEXT: | | | `-FloatingLiteral {{.*}} 'double' 1.200000e+00
-//CHECK-NEXT: | | |-ImplicitCastExpr {{.*}} '_Float16' <FloatingCast>
-//CHECK-NEXT: | | | `-FloatingLiteral {{.*}} 'double' 3.000000e+00
-//CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} '_Float16' <FloatingCast>
-//CHECK-NEXT: | | `-FloatingLiteral {{.*}} 'double' 3.000000e+04
-//CHECK-NEXT: | `-FunctionDecl {{.*}} func1n 'const volatile _Float16 (const _Float16 &)'
+// CHECK: |-NamespaceDecl {{.*}}
+// CHECK-NEXT: | |-VarDecl {{.*}} used f1n '_Float16'
+// CHECK-NEXT: | | `-typeDetails: BuiltinType {{.*}} '_Float16'
+// CHECK-NEXT: | |-VarDecl {{.*}} used f2n '_Float16' cinit
+// CHECK-NEXT: | | |-FloatingLiteral {{.*}} '_Float16' 3.300000e+01
+// CHECK-NEXT: | | `-typeDetails: BuiltinType {{.*}} '_Float16'
+// CHECK-NEXT: | |-VarDecl {{.*}} used arr1n '_Float16[10]'
+// CHECK-NEXT: | | `-typeDetails: ConstantArrayType {{.*}} '_Float16[10]' 10
+// CHECK-NEXT: | | `-typeDetails: BuiltinType {{.*}} '_Float16'
+// CHECK-NEXT: | |-VarDecl {{.*}} used arr2n '_Float16[3]' cinit
+// CHECK-NEXT: | | |-InitListExpr {{.*}} '_Float16[3]'
+// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} '_Float16' <FloatingCast>
+// CHECK-NEXT: | | | | `-FloatingLiteral {{.*}} 'double' 1.200000e+00
+// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} '_Float16' <FloatingCast>
+// CHECK-NEXT: | | | | `-FloatingLiteral {{.*}} 'double' 3.000000e+00
+// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} '_Float16' <FloatingCast>
+// CHECK-NEXT: | | | `-FloatingLiteral {{.*}} 'double' 3.000000e+04
+// CHECK-NEXT: | | `-typeDetails: ConstantArrayType {{.*}} '_Float16[3]' 3
+// CHECK-NEXT: | | `-typeDetails: BuiltinType {{.*}} '_Float16'
+// CHECK-NEXT: | `-FunctionDecl {{.*}} line:27:27 used func1n 'const volatile _Float16 (const _Float16 &)'
+// CHECK-NEXT: | |-ParmVarDecl {{.*}} used arg 'const _Float16 &'
+// CHECK-NEXT: | | `-typeDetails: LValueReferenceType {{.*}} 'const _Float16 &'
+// CHECK-NEXT: | | `-qualTypeDetail: QualType {{.*}} 'const _Float16' const
+// CHECK-NEXT: | | `-typeDetails: BuiltinType {{.*}} '_Float16'
+// CHECK-NEXT: | `-CompoundStmt {{.*}}
+// CHECK-NEXT: | `-ReturnStmt {{.*}}
+// CHECK-NEXT: | `-BinaryOperator {{.*}} '_Float16' '-'
+// CHECK-NEXT: | |-BinaryOperator {{.*}} '_Float16' '+'
+// CHECK-NEXT: | | |-BinaryOperator {{.*}} '_Float16' '+'
+// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
+// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} 'const _Float16' lvalue ParmVar {{.*}} 'arg' 'const _Float16 &'
+// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
+// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} '_Float16' lvalue Var {{.*}} 'f2n' '_Float16'
+// CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
+// CHECK-NEXT: | | `-ArraySubscriptExpr {{.*}} '_Float16' lvalue
+// CHECK-NEXT: | | |-ImplicitCastExpr {{.*}} '_Float16 *' <ArrayToPointerDecay>
+// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} '_Float16[10]' lvalue Var {{.*}} 'arr1n' '_Float16[10]'
+// CHECK-NEXT: | | `-IntegerLiteral {{.*}} 'int' 4
+// CHECK-NEXT: | `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
+// CHECK-NEXT: | `-ArraySubscriptExpr {{.*}} '_Float16' lvalue
+// CHECK-NEXT: | |-ImplicitCastExpr {{.*}} '_Float16 *' <ArrayToPointerDecay>
+// CHECK-NEXT: | | `-DeclRefExpr {{.*}} '_Float16[3]' lvalue Var {{.*}} 'arr2n' '_Float16[3]'
+// CHECK-NEXT: | `-IntegerLiteral {{.*}} 'int' 1
/* File */
_Float16 f1f;
+// CHECK: |-VarDecl {{.*}} f1f '_Float16'
+// CHECK: | `-typeDetails: BuiltinType {{.*}} '_Float16'
+
_Float16 f2f = 32.4;
+// CHECK: |-VarDecl {{.*}} f2f '_Float16' cinit
+// CHECK-NEXT: | |-ImplicitCastExpr {{.*}} <col:16> '_Float16' <FloatingCast>
+// CHECK-NEXT: | | `-FloatingLiteral {{.*}} <col:16> 'double' 3.240000e+01
+// CHECK-NEXT: | `-typeDetails: BuiltinType {{.*}} '_Float16'
+
_Float16 arr1f[10];
+//CHECK: |-VarDecl {{.*}} arr1f '_Float16[10]'
+
_Float16 arr2f[] = { -1.2, -3.0, -3.e4 };
+// CHECK: |-VarDecl {{.*}} col:10 arr2f '_Float16[3]' cinit
+// CHECK: | |-InitListExpr {{.*}} <col:20, col:40> '_Float16[3]'
+// CHECK: | | |-ImplicitCastExpr {{.*}} <col:22, col:23> '_Float16' <FloatingCast>
+// CHECK: | | | `-UnaryOperator {{.*}} <col:22, col:23> 'double' prefix '-'
+// CHECK: | | | `-FloatingLiteral {{.*}} <col:23> 'double' 1.200000e+00
+// CHECK: | | |-ImplicitCastExpr {{.*}} <col:28, col:29> '_Float16' <FloatingCast>
+// CHECK: | | | `-UnaryOperator {{.*}} <col:28, col:29> 'double' prefix '-'
+// CHECK: | | | `-FloatingLiteral {{.*}} <col:29> 'double' 3.000000e+00
+// CHECK: | | `-ImplicitCastExpr {{.*}} <col:34, col:35> '_Float16' <FloatingCast>
+// CHECK: | | `-UnaryOperator {{.*}} <col:34, col:35> 'double' prefix '-'
+// CHECK: | | `-FloatingLiteral {{.*}} <col:35> 'double' 3.000000e+04
+// CHECK: | `-typeDetails: ConstantArrayType {{.*}} '_Float16[3]' 3
+// CHECK: | `-typeDetails: BuiltinType {{.*}} '_Float16'
+
_Float16 func1f(_Float16 arg);
-//CHECK: |-VarDecl {{.*}} f1f '_Float16'
-//CHECK-NEXT: |-VarDecl {{.*}} f2f '_Float16' cinit
-//CHECK-NEXT: | `-ImplicitCastExpr {{.*}} '_Float16' <FloatingCast>
-//CHECK-NEXT: | `-FloatingLiteral {{.*}} 'double' 3.240000e+01
-//CHECK-NEXT: |-VarDecl {{.*}} arr1f '_Float16[10]'
-//CHECK-NEXT: |-VarDecl {{.*}} arr2f '_Float16[3]' cinit
-//CHECK-NEXT: | `-InitListExpr {{.*}} '_Float16[3]'
-//CHECK-NEXT: | |-ImplicitCastExpr {{.*}} '_Float16' <FloatingCast>
-//CHECK-NEXT: | | `-UnaryOperator {{.*}} 'double' prefix '-'
-//CHECK-NEXT: | | `-FloatingLiteral {{.*}} 'double' 1.200000e+00
-//CHECK-NEXT: | |-ImplicitCastExpr {{.*}} '_Float16' <FloatingCast>
-//CHECK-NEXT: | | `-UnaryOperator {{.*}} 'double' prefix '-'
-//CHECK-NEXT: | | `-FloatingLiteral {{.*}} 'double' 3.000000e+00
-//CHECK-NEXT: | `-ImplicitCastExpr {{.*}} '_Float16' <FloatingCast>
-//CHECK-NEXT: | `-UnaryOperator {{.*}} 'double' prefix '-'
-//CHECK-NEXT: | `-FloatingLiteral {{.*}} 'double' 3.000000e+04
-//CHECK-NEXT: |-FunctionDecl {{.*}} func1f '_Float16 (_Float16)'
-//CHECK-NEXT: | `-ParmVarDecl {{.*}} arg '_Float16'
+//CHECK: |-FunctionDecl {{.*}} func1f '_Float16 (_Float16)'
+//CHECK: | `-ParmVarDecl {{.*}} arg '_Float16'
// Mixing __fp16 and Float16 types:
@@ -80,34 +117,39 @@ auto C = -1.0f16 + B;
// When we do *not* have native half types, we expect __fp16 to be promoted to
// float, and consequently also _Float16 promotions to float:
-
-//CHECK: -VarDecl {{.*}} used B '__fp16' cinit
-//CHECK-NEXT: | `-ImplicitCastExpr {{.*}} '__fp16' <FloatingCast>
-//CHECK-NEXT: | `-UnaryOperator {{.*}} 'double' prefix '-'
-//CHECK-NEXT: | `-FloatingLiteral {{.*}} 'double' 1.000000e-01
-//CHECK-NEXT: |-VarDecl {{.*}} C 'float' cinit
-//CHECK-NEXT: | `-BinaryOperator {{.*}} 'float' '+'
-//CHECK-NEXT: | |-ImplicitCastExpr {{.*}} 'float' <FloatingCast>
-//CHECK-NEXT: | | `-UnaryOperator {{.*}} '_Float16' prefix '-'
-//CHECK-NEXT: | | `-FloatingLiteral {{.*}} '_Float16' 1.000000e+00
-//CHECK-NEXT: | `-ImplicitCastExpr {{.*}} 'float' <FloatingCast>
-//CHECK-NEXT: | `-ImplicitCastExpr {{.*}} '__fp16' <LValueToRValue>
-//CHECK-NEXT: | `-DeclRefExpr {{.*}} '__fp16' lvalue Var 0x{{.*}} 'B' '__fp16'
-
-// When do have native half types, we expect to see promotions to fp16:
-
-//CHECK-NATIVE: |-VarDecl {{.*}} used B '__fp16' cinit
-//CHECK-NATIVE: | `-ImplicitCastExpr {{.*}} '__fp16' <FloatingCast>
-//CHECK-NATIVE: | `-UnaryOperator {{.*}} 'double' prefix '-'
-//CHECK-NATIVE: | `-FloatingLiteral {{.*}} 'double' 1.000000e-01
-//CHECK-NATIVE: |-VarDecl {{.*}} C '__fp16' cinit
-//CHECK-NATIVE: | `-BinaryOperator {{.*}} '__fp16' '+'
-//CHECK-NATIVE: | |-ImplicitCastExpr {{.*}} '__fp16' <FloatingCast>
-//CHECK-NATIVE: | | `-UnaryOperator {{.*}} '_Float16' prefix '-'
-//CHECK-NATIVE: | | `-FloatingLiteral {{.*}} '_Float16' 1.000000e+00
-//CHECK-NATIVE: | `-ImplicitCastExpr {{.*}} '__fp16' <LValueToRValue>
-//CHECK-NATIVE: | `-DeclRefExpr {{.*}} '__fp16' lvalue Var 0x{{.*}} 'B' '__fp16'
-
+// CHECK: |-VarDecl {{.*}} used B '__fp16' cinit
+// CHECK-NEXT: | |-ImplicitCastExpr {{.*}} '__fp16' <FloatingCast>
+// CHECK-NEXT: | | `-UnaryOperator {{.*}} 'double' prefix '-'
+// CHECK-NEXT: | | `-FloatingLiteral {{.*}} 'double' 1.000000e-01
+// CHECK-NEXT: | `-typeDetails: BuiltinType {{.*}} '__fp16'
+// CHECK-NEXT: |-VarDecl {{.*}} col:6 C 'float' cinit
+// CHECK-NEXT: | |-BinaryOperator {{.*}} 'float' '+'
+// CHECK-NEXT: | | |-ImplicitCastExpr {{.*}} 'float' <FloatingCast>
+// CHECK-NEXT: | | | `-UnaryOperator {{.*}} '_Float16' prefix '-'
+// CHECK-NEXT: | | | `-FloatingLiteral {{.*}} '_Float16' 1.000000e+00
+// CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} 'float' <FloatingCast>
+// CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} '__fp16' <LValueToRValue>
+// CHECK-NEXT: | | `-DeclRefExpr {{.*}} '__fp16' lvalue Var {{.*}} 'B' '__fp16'
+// CHECK-NEXT: | `-typeDetails: AutoType {{.*}} 'float' sugar
+// CHECK-NEXT: | `-typeDetails: BuiltinType {{.*}} 'float'
+
+// When we do have native half types, we expect to see promotions to fp16:
+
+// CHECK-NATIVE: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>
+// CHECK-NATIVE: |-VarDecl {{.*}} used B '__fp16' cinit
+// CHECK-NATIVE: | |-ImplicitCastExpr {{.*}} '__fp16' <FloatingCast>
+// CHECK-NATIVE: | | `-UnaryOperator {{.*}} 'double' prefix '-'
+// CHECK-NATIVE: | | `-FloatingLiteral {{.*}} 'double' 1.000000e-01
+// CHECK-NATIVE: | `-typeDetails: BuiltinType {{.*}} '__fp16'
+// CHECK-NATIVE: |-VarDecl {{.*}} C '__fp16' cinit
+// CHECK-NATIVE: | |-BinaryOperator {{.*}} '__fp16' '+'
+// CHECK-NATIVE: | | |-ImplicitCastExpr {{.*}} '__fp16' <FloatingCast>
+// CHECK-NATIVE: | | | `-UnaryOperator {{.*}} '_Float16' prefix '-'
+// CHECK-NATIVE: | | | `-FloatingLiteral {{.*}} '_Float16' 1.000000e+00
+// CHECK-NATIVE: | | `-ImplicitCastExpr {{.*}} '__fp16' <LValueToRValue>
+// CHECK-NATIVE: | | `-DeclRefExpr {{.*}} '__fp16' lvalue Var {{.*}} 'B' '__fp16'
+// CHECK-NATIVE: | `-typeDetails: AutoType {{.*}} '__fp16' sugar
+// CHECK-NATIVE: | `-typeDetails: BuiltinType {{.*}} '__fp16'
/* Class */
@@ -129,11 +171,11 @@ class C1 {
//CHECK: | |-CXXRecordDecl {{.*}} implicit referenced class C1
//CHECK-NEXT: | |-FieldDecl {{.*}} referenced f1c '_Float16'
//CHECK-NEXT: | |-VarDecl {{.*}} used f2c 'const _Float16' static
-//CHECK-NEXT: | |-FieldDecl {{.*}} f3c 'volatile _Float16'
+//CHECK: | |-FieldDecl {{.*}} f3c 'volatile _Float16'
//CHECK-NEXT: | |-AccessSpecDecl
//CHECK-NEXT: | |-CXXConstructorDecl {{.*}} used C1 'void (_Float16)
//CHECK-NEXT: | | |-ParmVarDecl {{.*}} used arg '_Float16'
-//CHECK-NEXT: | | |-CXXCtorInitializer Field {{.*}} 'f1c' '_Float16'
+//CHECK: | | |-CXXCtorInitializer Field {{.*}} 'f1c' '_Float16'
//CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
//CHECK-NEXT: | | | `-DeclRefExpr {{.*}} '_Float16' lvalue ParmVar 0x{{.*}} 'arg' '_Float16'
//CHECK-NEXT: | | |-CXXCtorInitializer Field {{.*}} 'f3c' 'volatile _Float16'
@@ -142,7 +184,7 @@ class C1 {
//CHECK-NEXT: | | `-CompoundStmt
//CHECK-NEXT: | |-CXXMethodDecl {{.*}} used func1c '_Float16 (_Float16)
//CHECK-NEXT: | | |-ParmVarDecl {{.*}} used arg '_Float16'
-//CHECK-NEXT: | | `-CompoundStmt
+//CHECK: | | `-CompoundStmt
//CHECK-NEXT: | | `-ReturnStmt
//CHECK-NEXT: | | `-BinaryOperator {{.*}} '_Float16' '+'
//CHECK-NEXT: | | |-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
@@ -152,7 +194,7 @@ class C1 {
//CHECK-NEXT: | | `-DeclRefExpr {{.*}} '_Float16' lvalue ParmVar 0x{{.*}} 'arg' '_Float16'
//CHECK-NEXT: | |-CXXMethodDecl {{.*}} used func2c '_Float16 (_Float16)' static
//CHECK-NEXT: | | |-ParmVarDecl {{.*}} used arg '_Float16'
-//CHECK-NEXT: | | `-CompoundStmt
+//CHECK: | | `-CompoundStmt
//CHECK-NEXT: | | `-ReturnStmt
//CHECK-NEXT: | | `-BinaryOperator {{.*}} '_Float16' '*'
//CHECK-NEXT: | | |-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
@@ -171,7 +213,7 @@ template <class C> C func1t(C arg) {
//CHECK-NEXT: | |-TemplateTypeParmDecl {{.*}} C
//CHECK-NEXT: | |-FunctionDecl {{.*}} func1t 'C (C)'
//CHECK-NEXT: | | |-ParmVarDecl {{.*}} referenced arg 'C'
-//CHECK-NEXT: | | `-CompoundStmt
+//CHECK: | | `-CompoundStmt
//CHECK-NEXT: | | `-ReturnStmt
//CHECK-NEXT: | | `-BinaryOperator {{.*}} '<dependent type>' '*'
//CHECK-NEXT: | | |-DeclRefExpr {{.*}} 'C' lvalue ParmVar {{.*}} 'arg' 'C'
@@ -179,7 +221,7 @@ template <class C> C func1t(C arg) {
//CHECK-NEXT: | `-FunctionDecl {{.*}} used func1t '_Float16 (_Float16)'
//CHECK-NEXT: | |-TemplateArgument type '_Float16'
//CHECK: | |-ParmVarDecl {{.*}} used arg '_Float16'
-//CHECK-NEXT: | `-CompoundStmt
+//CHECK: | `-CompoundStmt
//CHECK-NEXT: | `-ReturnStmt
//CHECK-NEXT: | `-BinaryOperator {{.*}} '_Float16' '*'
//CHECK-NEXT: | |-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
@@ -210,132 +252,166 @@ extern int printf (const char *__restrict __format, ...);
int main(void) {
_Float16 f1l = 1e3f16;
//CHECK: | `-VarDecl {{.*}} used f1l '_Float16' cinit
-//CHECK-NEXT: | `-FloatingLiteral {{.*}} '_Float16' 1.000000e+03
+//CHECK-NEXT: | |-FloatingLiteral {{.*}} '_Float16' 1.000000e+03
_Float16 f2l = -0.f16;
-//CHECK: | `-VarDecl {{.*}} used f2l '_Float16' cinit
-//CHECK-NEXT: | `-UnaryOperator {{.*}} '_Float16' prefix '-'
-//CHECK-NEXT: | `-FloatingLiteral {{.*}} '_Float16' 0.000000e+00
+// CHECK: | `-VarDecl {{.*}} used f2l '_Float16' cinit
+// CHECK-NEXT: | |-UnaryOperator {{.*}} '_Float16' prefix '-'
+// CHECK-NEXT: | | `-FloatingLiteral {{.*}} '_Float16' 0.000000e+00
+// CHECK-NEXT: | `-typeDetails: BuiltinType {{.*}} '_Float16'
_Float16 f3l = 1.000976562;
-//CHECK: | `-VarDecl {{.*}} used f3l '_Float16' cinit
-//CHECK-NEXT: | `-ImplicitCastExpr {{.*}} '_Float16' <FloatingCast>
-//CHECK-NEXT: | `-FloatingLiteral {{.*}} 'double' 1.000977e+00
+// CHECK: | `-VarDecl {{.*}} used f3l '_Float16' cinit
+// CHECK-NEXT: | |-ImplicitCastExpr {{.*}} '_Float16' <FloatingCast>
+// CHECK-NEXT: | | `-FloatingLiteral {{.*}} 'double' 1.000977e+00
+// CHECK-NEXT: | `-typeDetails: BuiltinType {{.*}} '_Float16'
C1 c1(f1l);
-//CHECK: | `-VarDecl{{.*}} used c1 'C1' callinit
-//CHECK-NEXT: | `-CXXConstructExpr {{.*}} 'C1' 'void (_Float16)
-//CHECK-NEXT: | `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
-//CHECK-NEXT: | `-DeclRefExpr {{.*}} '_Float16' lvalue Var 0x{{.*}} 'f1l' '_Float16'
+// CHECK: | `-VarDecl {{.*}} used c1 'C1' callinit
+// CHECK-NEXT: | |-CXXConstructExpr {{.*}} 'C1' 'void (_Float16)'
+// CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
+// CHECK-NEXT: | | `-DeclRefExpr {{.*}} '_Float16' lvalue Var {{.*}} 'f1l' '_Float16'
+// CHECK-NEXT: | `-typeDetails: ElaboratedType {{.*}} 'C1' sugar
+// CHECK-NEXT: | `-typeDetails: RecordType {{.*}} 'C1'
+// CHECK-NEXT: | `-CXXRecord {{.*}} 'C1'
S1<_Float16> s1 = { 132.f16 };
-//CHECK: | `-VarDecl {{.*}} used s1 'S1<_Float16>' cinit
-//CHECK-NEXT: | `-InitListExpr {{.*}} 'S1<_Float16>'
-//CHECK-NEXT: | `-FloatingLiteral {{.*}} '_Float16' 1.320000e+02
+// CHECK: | `-VarDecl {{.*}} used s1 'S1<_Float16>' cinit
+// CHECK-NEXT: | |-InitListExpr {{.*}} 'S1<_Float16>'
+// CHECK-NEXT: | | `-FloatingLiteral {{.*}} '_Float16' 1.320000e+02
+// CHECK-NEXT: | `-typeDetails: ElaboratedType {{.*}} 'S1<_Float16>' sugar
+// CHECK-NEXT: | `-typeDetails: TemplateSpecializationType {{.*}} 'S1<_Float16>' sugar
+// CHECK-NEXT: | |-name: 'S1' qualified
+// CHECK-NEXT: | | `-ClassTemplateDecl {{.*}} S1
+// CHECK-NEXT: | |-TemplateArgument type '_Float16'
+// CHECK-NEXT: | | `-typeDetails: BuiltinType {{.*}} '_Float16'
+// CHECK-NEXT: | `-typeDetails: RecordType {{.*}} 'S1<_Float16>'
+// CHECK-NEXT: | `-ClassTemplateSpecialization {{.*}} 'S1'
_Float16 f4l = func1n(f1l) + func1f(f2l) + c1.func1c(f3l) + c1.func2c(f1l) +
func1t(f1l) + s1.mem2 - f1n + f2n;
-//CHECK: | `-VarDecl {{.*}} used f4l '_Float16' cinit
-//CHECK-NEXT: | `-BinaryOperator {{.*}} '_Float16' '+'
-//CHECK-NEXT: | |-BinaryOperator {{.*}} '_Float16' '-'
-//CHECK-NEXT: | | |-BinaryOperator {{.*}} '_Float16' '+'
-//CHECK-NEXT: | | | |-BinaryOperator {{.*}} '_Float16' '+'
-//CHECK-NEXT: | | | | |-BinaryOperator {{.*}} '_Float16' '+'
-//CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} '_Float16' '+'
-//CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} '_Float16' '+'
-//CHECK-NEXT: | | | | | | | |-CallExpr {{.*}} '_Float16'
-//CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} 'const volatile _Float16 (*)(const _Float16 &)' <FunctionToPointerDecay>
-//CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'const volatile _Float16 (const _Float16 &)' lvalue Function {{.*}} 'func1n' 'const volatile _Float16 (const _Float16 &)'
-//CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} 'const _Float16' lvalue <NoOp>
-//CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} '_Float16' lvalue Var {{.*}} 'f1l' '_Float16'
-//CHECK-NEXT: | | | | | | | `-CallExpr {{.*}} '_Float16'
-//CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} '_Float16 (*)(_Float16)' <FunctionToPointerDecay>
-//CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} '_Float16 (_Float16)' lvalue Function {{.*}} 'func1f' '_Float16 (_Float16)'
-//CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
-//CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} '_Float16' lvalue Var {{.*}} 'f2l' '_Float16'
-//CHECK-NEXT: | | | | | | `-CXXMemberCallExpr {{.*}} '_Float16'
-//CHECK-NEXT: | | | | | | |-MemberExpr {{.*}} '<bound member function type>' .func1c {{.*}}
-//CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'C1' lvalue Var {{.*}} 'c1' 'C1'
-//CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
-//CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} '_Float16' lvalue Var {{.*}} 'f3l' '_Float16'
-//CHECK-NEXT: | | | | | `-CallExpr {{.*}} '_Float16'
-//CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} '_Float16 (*)(_Float16)' <FunctionToPointerDecay>
-//CHECK-NEXT: | | | | | | `-MemberExpr {{.*}} '_Float16 (_Float16)' lvalue .func2c {{.*}}
-//CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'C1' lvalue Var {{.*}} 'c1' 'C1'
-//CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
-//CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} '_Float16' lvalue Var {{.*}} 'f1l' '_Float16'
-//CHECK-NEXT: | | | | `-CallExpr {{.*}} '_Float16'
-//CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} '_Float16 (*)(_Float16)' <FunctionToPointerDecay>
-//CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} '_Float16 (_Float16)' lvalue Function {{.*}} 'func1t' '_Float16 (_Float16)' (FunctionTemplate {{.*}} 'func1t')
-//CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
-//CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} '_Float16' lvalue Var {{.*}} 'f1l' '_Float16'
-//CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
-//CHECK-NEXT: | | | `-MemberExpr {{.*}} '_Float16' lvalue .mem2 {{.*}}
-//CHECK-NEXT: | | | `-DeclRefExpr {{.*}} 'S1<_Float16>' lvalue Var {{.*}} 's1' 'S1<_Float16>'
-//CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
-//CHECK-NEXT: | | `-DeclRefExpr {{.*}} '_Float16' lvalue Var {{.*}} 'f1n' '_Float16'
-//CHECK-NEXT: | `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
-//CHECK-NEXT: | `-DeclRefExpr {{.*}} '_Float16' lvalue Var {{.*}} 'f2n' '_Float16'
+// CHECK: | `-VarDecl {{.*}} used f4l '_Float16' cinit
+// CHECK-NEXT: | |-BinaryOperator {{.*}} '_Float16' '+'
+// CHECK-NEXT: | | |-BinaryOperator {{.*}} '_Float16' '-'
+// CHECK-NEXT: | | | |-BinaryOperator {{.*}} '_Float16' '+'
+// CHECK-NEXT: | | | | |-BinaryOperator {{.*}} '_Float16' '+'
+// CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} '_Float16' '+'
+// CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} '_Float16' '+'
+// CHECK-NEXT: | | | | | | | |-BinaryOperator {{.*}} '_Float16' '+'
+// CHECK-NEXT: | | | | | | | | |-CallExpr {{.*}} '_Float16'
+// CHECK-NEXT: | | | | | | | | | |-ImplicitCastExpr {{.*}} 'const volatile _Float16 (*)(const _Float16 &)' <FunctionToPointerDecay>
+// CHECK-NEXT: | | | | | | | | | | `-DeclRefExpr {{.*}} 'const volatile _Float16 (const _Float16 &)' lvalue Function {{.*}} 'func1n' 'const volatile _Float16 (const _Float16 &)'
+// CHECK-NEXT: | | | | | | | | | `-ImplicitCastExpr {{.*}} 'const _Float16' lvalue <NoOp>
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} '_Float16' lvalue Var {{.*}} 'f1l' '_Float16'
+// CHECK-NEXT: | | | | | | | | `-CallExpr {{.*}} '_Float16'
+// CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} '_Float16 (*)(_Float16)' <FunctionToPointerDecay>
+// CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} '_Float16 (_Float16)' lvalue Function {{.*}} 'func1f' '_Float16 (_Float16)'
+// CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} '_Float16' lvalue Var {{.*}} 'f2l' '_Float16'
+// CHECK-NEXT: | | | | | | | `-CXXMemberCallExpr {{.*}} '_Float16'
+// CHECK-NEXT: | | | | | | | |-MemberExpr {{.*}} '<bound member function type>' .func1c {{.*}}
+// CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} 'C1' lvalue Var {{.*}} 'c1' 'C1'
+// CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} '_Float16' lvalue Var {{.*}} 'f3l' '_Float16'
+// CHECK-NEXT: | | | | | | `-CallExpr {{.*}} '_Float16'
+// CHECK-NEXT: | | | | | | |-ImplicitCastExpr {{.*}} '_Float16 (*)(_Float16)' <FunctionToPointerDecay>
+// CHECK-NEXT: | | | | | | | `-MemberExpr {{.*}} '_Float16 (_Float16)' lvalue .func2c {{.*}}
+// CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'C1' lvalue Var {{.*}} 'c1' 'C1'
+// CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} '_Float16' lvalue Var {{.*}} 'f1l' '_Float16'
+// CHECK-NEXT: | | | | | `-CallExpr {{.*}} '_Float16'
+// CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} '_Float16 (*)(_Float16)' <FunctionToPointerDecay>
+// CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} '_Float16 (_Float16)' lvalue Function {{.*}} 'func1t' '_Float16 (_Float16)' (FunctionTemplate {{.*}} 'func1t')
+// CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
+// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} '_Float16' lvalue Var {{.*}} 'f1l' '_Float16'
+// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
+// CHECK-NEXT: | | | | `-MemberExpr {{.*}} '_Float16' lvalue .mem2 {{.*}}
+// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} 'S1<_Float16>' lvalue Var {{.*}} 's1' 'S1<_Float16>'
+// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
+// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} '_Float16' lvalue Var {{.*}} 'f1n' '_Float16'
+// CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
+// CHECK-NEXT: | | `-DeclRefExpr {{.*}} '_Float16' lvalue Var {{.*}} 'f2n' '_Float16'
+// CHECK-NEXT: | `-typeDetails: BuiltinType {{.*}} '_Float16'
auto f5l = -1.f16, *f6l = &f2l, f7l = func1t(f3l);
-//CHECK: | |-VarDecl {{.*}} f5l '_Float16' cinit
-//CHECK-NEXT: | | `-UnaryOperator {{.*}} '_Float16' prefix '-'
-//CHECK-NEXT: | | `-FloatingLiteral {{.*}} '_Float16' 1.000000e+00
-//CHECK-NEXT: | |-VarDecl {{.*}} f6l '_Float16 *' cinit
-//CHECK-NEXT: | | `-UnaryOperator {{.*}} '_Float16 *' prefix '&'
-//CHECK-NEXT: | | `-DeclRefExpr {{.*}} '_Float16' lvalue Var {{.*}} 'f2l' '_Float16'
-//CHECK-NEXT: | `-VarDecl {{.*}} f7l '_Float16' cinit
-//CHECK-NEXT: | `-CallExpr {{.*}} '_Float16'
-//CHECK-NEXT: | |-ImplicitCastExpr {{.*}} '_Float16 (*)(_Float16)' <FunctionToPointerDecay>
-//CHECK-NEXT: | | `-DeclRefExpr {{.*}} '_Float16 (_Float16)' lvalue Function {{.*}} 'func1t' '_Float16 (_Float16)' (FunctionTemplate {{.*}} 'func1t')
-//CHECK-NEXT: | `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
-//CHECK-NEXT: | `-DeclRefExpr {{.*}} '_Float16' lvalue Var {{.*}} 'f3l' '_Float16'
+
+// CHECK: | |-VarDecl {{.*}} <col:3, col:15> col:8 f5l '_Float16' cinit
+// CHECK: | | |-UnaryOperator {{.*}} <col:14, col:15> '_Float16' prefix '-'
+// CHECK: | | | `-FloatingLiteral {{.*}} <col:15> '_Float16' 1.000000e+00
+// CHECK: | | `-typeDetails: AutoType {{.*}} '_Float16' sugar
+// CHECK: | | `-typeDetails: BuiltinType {{.*}} '_Float16'
+// CHECK: | |-VarDecl {{.*}} <col:3, col:30> col:23 f6l '_Float16 *' cinit
+// CHECK: | | |-UnaryOperator {{.*}} <col:29, col:30> '_Float16 *' prefix '&' cannot overflow
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:30> '_Float16' lvalue Var {{.*}} 'f2l' '_Float16'
+// CHECK: | | `-typeDetails: PointerType {{.*}} '_Float16 *'
+// CHECK: | | `-typeDetails: AutoType {{.*}} '_Float16' sugar
+// CHECK: | | `-typeDetails: BuiltinType {{.*}} '_Float16'
+// CHECK: | `-VarDecl {{.*}} <col:3, col:51> col:35 f7l '_Float16' cinit
+// CHECK: | |-CallExpr {{.*}} <col:41, col:51> '_Float16'
+// CHECK: | | |-ImplicitCastExpr {{.*}} <col:41> '_Float16 (*)(_Float16)' <FunctionToPointerDecay>
+// CHECK: | | | `-DeclRefExpr {{.*}} <col:41> '_Float16 (_Float16)' lvalue Function {{.*}} 'func1t' '_Float16 (_Float16)' (FunctionTemplate {{.*}} 'func1t')
+// CHECK: | | `-ImplicitCastExpr {{.*}} <col:48> '_Float16' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr {{.*}} <col:48> '_Float16' lvalue Var {{.*}} 'f3l' '_Float16'
+// CHECK: | `-typeDetails: AutoType {{.*}} '_Float16' sugar
+// CHECK: | `-typeDetails: SubstTemplateTypeParmType {{.*}} '_Float16' sugar class depth 0 index 0 C
+// CHECK: | |-FunctionTemplate {{.*}} 'func1t'
+// CHECK: | `-typeDetails: BuiltinType {{.*}} '_Float16'
_Float16 f8l = f4l++;
-//CHECK: | `-VarDecl {{.*}} f8l '_Float16' cinit
-//CHECK-NEXT: | `-UnaryOperator {{.*}} '_Float16' postfix '++'
-//CHECK-NEXT: | `-DeclRefExpr {{.*}} '_Float16' lvalue Var {{.*}} 'f4l' '_Float16'
+// CHECK: | `-VarDecl {{.*}} <col:3, col:21> col:12 f8l '_Float16' cinit
+// CHECK: | |-UnaryOperator {{.*}} <col:18, col:21> '_Float16' postfix '++'
+// CHECK: | | `-DeclRefExpr {{.*}} <col:18> '_Float16' lvalue Var {{.*}} 'f4l' '_Float16'
+// CHECK: | `-typeDetails: BuiltinType {{.*}} '_Float16'
+
_Float16 arr1l[] = { -1.f16, -0.f16, -11.f16 };
-//CHECK: `-VarDecl {{.*}} arr1l '_Float16[3]' cinit
-//CHECK-NEXT: `-InitListExpr {{.*}} '_Float16[3]'
-//CHECK-NEXT: |-UnaryOperator {{.*}} '_Float16' prefix '-'
-//CHECK-NEXT: | `-FloatingLiteral {{.*}} '_Float16' 1.000000e+00
-//CHECK-NEXT: |-UnaryOperator {{.*}} '_Float16' prefix '-'
-//CHECK-NEXT: | `-FloatingLiteral {{.*}} '_Float16' 0.000000e+00
-//CHECK-NEXT: `-UnaryOperator {{.*}} '_Float16' prefix '-'
-//CHECK-NEXT: `-FloatingLiteral {{.*}} '_Float16' 1.100000e+01
+// CHECK: | `-VarDecl {{.*}} <col:3, col:48> col:12 arr1l '_Float16[3]' cinit
+// CHECK: | |-InitListExpr {{.*}} <col:22, col:48> '_Float16[3]'
+// CHECK: | | |-UnaryOperator {{.*}} <col:24, col:25> '_Float16' prefix '-'
+// CHECK: | | | `-FloatingLiteral {{.*}} <col:25> '_Float16' 1.000000e+00
+// CHECK: | | |-UnaryOperator {{.*}} <col:32, col:33> '_Float16' prefix '-'
+// CHECK: | | | `-FloatingLiteral {{.*}} <col:33> '_Float16' 0.000000e+00
+// CHECK: | | `-UnaryOperator {{.*}} <col:40, col:41> '_Float16' prefix '-'
+// CHECK: | | `-FloatingLiteral {{.*}} <col:41> '_Float16' 1.100000e+01
+// CHECK: | `-typeDetails: ConstantArrayType {{.*}} '_Float16[3]' 3
+// CHECK: | `-typeDetails: BuiltinType {{.*}} '_Float16'
float cvtf = f2n;
-//CHECK: `-VarDecl {{.*}} cvtf 'float' cinit
-//CHECK-NEXT: `-ImplicitCastExpr {{.*}} 'float' <FloatingCast>
-//CHECK-NEXT: `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
-//CHECK-NEXT: `-DeclRefExpr {{.*}} '_Float16' lvalue Var {{.*}} 'f2n' '_Float16'
+// CHECK: | `-VarDecl {{.*}} <col:3, col:16> col:9 cvtf 'float' cinit
+// CHECK: | |-ImplicitCastExpr {{.*}} <col:16> 'float' <FloatingCast>
+// CHECK: | | `-ImplicitCastExpr {{.*}} <col:16> '_Float16' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr {{.*}} <col:16> '_Float16' lvalue Var {{.*}} 'f2n' '_Float16'
+// CHECK: | `-typeDetails: BuiltinType {{.*}} 'float'
double cvtd = f2n;
-//CHECK: `-VarDecl {{.*}} cvtd 'double' cinit
-//CHECK-NEXT: `-ImplicitCastExpr {{.*}} 'double' <FloatingCast>
-//CHECK-NEXT: `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
-//CHECK-NEXT: `-DeclRefExpr {{.*}} '_Float16' lvalue Var {{.*}} 'f2n' '_Float16'
+// CHECK: | `-VarDecl {{.*}} <col:3, col:17> col:10 cvtd 'double' cinit
+// CHECK: | |-ImplicitCastExpr {{.*}} <col:17> 'double' <FloatingCast>
+// CHECK: | | `-ImplicitCastExpr {{.*}} <col:17> '_Float16' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr {{.*}} <col:17> '_Float16' lvalue Var {{.*}} 'f2n' '_Float16'
+// CHECK: | `-typeDetails: BuiltinType {{.*}} 'double'
long double cvtld = f2n;
-//CHECK: `-VarDecl {{.*}} cvtld 'long double' cinit
-//CHECK-NEXT: `-ImplicitCastExpr {{.*}} 'long double' <FloatingCast>
-//CHECK-NEXT: `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
-//CHECK-NEXT: `-DeclRefExpr {{.*}} '_Float16' lvalue Var {{.*}} 'f2n' '_Float16'
+// CHECK: | `-VarDecl {{.*}} <col:3, col:23> col:15 cvtld 'long double' cinit
+// CHECK: | |-ImplicitCastExpr {{.*}} <col:23> 'long double' <FloatingCast>
+// CHECK: | | `-ImplicitCastExpr {{.*}} <col:23> '_Float16' <LValueToRValue>
+// CHECK: | | `-DeclRefExpr {{.*}} <col:23> '_Float16' lvalue Var {{.*}} 'f2n' '_Float16'
+// CHECK: | `-typeDetails: BuiltinType {{.*}} 'long double'
_Float16 f2h = 42.0f;
-//CHECK: `-VarDecl {{.*}} f2h '_Float16' cinit
-//CHECK-NEXT: `-ImplicitCastExpr {{.*}} '_Float16' <FloatingCast>
-//CHECK-NEXT: `-FloatingLiteral {{.*}} 'float' 4.200000e+01
+// CHECK: | `-VarDecl {{.*}} <col:3, col:18> col:12 f2h '_Float16' cinit
+// CHECK: | |-ImplicitCastExpr {{.*}} <col:18> '_Float16' <FloatingCast>
+// CHECK: | | `-FloatingLiteral {{.*}} <col:18> 'float' 4.200000e+01
+// CHECK: | `-typeDetails: BuiltinType {{.*}} '_Float16'
_Float16 d2h = 42.0;
-//CHECK: `-VarDecl {{.*}} d2h '_Float16' cinit
-//CHECK-NEXT: `-ImplicitCastExpr {{.*}} '_Float16' <FloatingCast>
-//CHECK-NEXT: `-FloatingLiteral {{.*}} 'double' 4.200000e+01
+// CHECK: | `-VarDecl {{.*}} <col:3, col:18> col:12 d2h '_Float16' cinit
+// CHECK: | |-ImplicitCastExpr {{.*}} <col:18> '_Float16' <FloatingCast>
+// CHECK: | | `-FloatingLiteral {{.*}} <col:18> 'double' 4.200000e+01
+// CHECK: | `-typeDetails: BuiltinType {{.*}} '_Float16'
_Float16 ld2h = 42.0l;
-//CHECK: `-VarDecl {{.*}} ld2h '_Float16' cinit
-//CHECK-NEXT: `-ImplicitCastExpr {{.*}} '_Float16' <FloatingCast>
-//CHECK-NEXT: `-FloatingLiteral {{.*}} 'long double' 4.200000e+01
+// CHECK: `-VarDecl {{.*}} <col:3, col:19> col:12 ld2h '_Float16' cinit
+// CHECK: |-ImplicitCastExpr {{.*}} <col:19> '_Float16' <FloatingCast>
+// CHECK: | `-FloatingLiteral {{.*}} <col:19> 'long double' 4.200000e+01
+// CHECK: `-typeDetails: BuiltinType {{.*}} '_Float16'
}
diff --git a/clang/test/AST/ms-constexpr.cpp b/clang/test/AST/ms-constexpr.cpp
index 673af1234f443..cf38f522f69d2 100644
--- a/clang/test/AST/ms-constexpr.cpp
+++ b/clang/test/AST/ms-constexpr.cpp
@@ -3,13 +3,13 @@
// expected-no-diagnostics
// CHECK: used f1 'bool ()'
-// CHECK: MSConstexprAttr 0x{{[0-9a-f]+}} <col:3, col:9>
+// CHECK: attrDetails: MSConstexprAttr 0x{{[0-9a-f]+}} <col:3, col:9>
[[msvc::constexpr]] bool f1() { return true; }
// CHECK: used constexpr f2 'bool ()'
// CHECK-NEXT: CompoundStmt 0x{{[0-9a-f]+}} <col:21, col:56>
// CHECK-NEXT: AttributedStmt 0x{{[0-9a-f]+}} <col:23, col:53>
-// CHECK-NEXT: MSConstexprAttr 0x{{[0-9a-f]+}} <col:25, col:31>
+// CHECK-NEXT: attrDetails: MSConstexprAttr 0x{{[0-9a-f]+}} <col:25, col:31>
// CHECK-NEXT: ReturnStmt 0x{{[0-9a-f]+}} <col:43, col:53>
constexpr bool f2() { [[msvc::constexpr]] return f1(); }
static_assert(f2());
diff --git a/clang/test/AST/multistep-explicit-cast-json.c b/clang/test/AST/multistep-explicit-cast-json.c
index fd77bbdcbba80..84dfbd34d30d5 100644
--- a/clang/test/AST/multistep-explicit-cast-json.c
+++ b/clang/test/AST/multistep-explicit-cast-json.c
@@ -1,626 +1,698 @@
-// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsyntax-only -ast-dump=json %s | FileCheck %s
-
-unsigned char implicitcast_0(unsigned int x) {
- return x;
-}
-
-signed char implicitcast_1(unsigned int x) {
- return x;
-}
-
-unsigned char implicitcast_2(signed int x) {
- return x;
-}
-
-signed char implicitcast_3(signed int x) {
- return x;
-}
-
-//----------------------------------------------------------------------------//
-
-unsigned char cstylecast_0(unsigned int x) {
- return (unsigned char)x;
-}
-
-signed char cstylecast_1(unsigned int x) {
- return (signed char)x;
-}
-
-unsigned char cstylecast_2(signed int x) {
- return (unsigned char)x;
-}
-
-signed char cstylecast_3(signed int x) {
- return (signed char)x;
-}
-
-// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
-// using --filters=ImplicitCastExpr,CStyleCastExpr
-
-// CHECK: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned char"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralCast",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "signed char"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralCast",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned char"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralCast",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "signed char"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralCast",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK: "kind": "CStyleCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned char"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralCast",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "isPartOfExplicitCast": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK: "kind": "CStyleCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "signed char"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralCast",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "isPartOfExplicitCast": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK: "kind": "CStyleCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned char"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralCast",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "isPartOfExplicitCast": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK: "kind": "CStyleCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "signed char"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralCast",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "isPartOfExplicitCast": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
+// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsyntax-only -ast-dump=json %s | FileCheck %s
+
+unsigned char implicitcast_0(unsigned int x) {
+ return x;
+}
+
+signed char implicitcast_1(unsigned int x) {
+ return x;
+}
+
+unsigned char implicitcast_2(signed int x) {
+ return x;
+}
+
+signed char implicitcast_3(signed int x) {
+ return x;
+}
+
+//----------------------------------------------------------------------------//
+
+unsigned char cstylecast_0(unsigned int x) {
+ return (unsigned char)x;
+}
+
+signed char cstylecast_1(unsigned int x) {
+ return (signed char)x;
+}
+
+unsigned char cstylecast_2(signed int x) {
+ return (unsigned char)x;
+}
+
+signed char cstylecast_3(signed int x) {
+ return (signed char)x;
+}
+
+// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
+// using --filters=ImplicitCastExpr,CStyleCastExpr
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralCast",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "signed char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralCast",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralCast",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "signed char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralCast",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CStyleCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralCast",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "isPartOfExplicitCast": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CStyleCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "signed char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralCast",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "isPartOfExplicitCast": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CStyleCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralCast",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "isPartOfExplicitCast": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CStyleCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "signed char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralCast",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "isPartOfExplicitCast": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
diff --git a/clang/test/AST/multistep-explicit-cast-json.cpp b/clang/test/AST/multistep-explicit-cast-json.cpp
index dac40c653a499..0c6cc318f40e5 100644
--- a/clang/test/AST/multistep-explicit-cast-json.cpp
+++ b/clang/test/AST/multistep-explicit-cast-json.cpp
@@ -1,1587 +1,1731 @@
-// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsyntax-only -ast-dump=json %s | FileCheck %s
-
-unsigned char implicitcast_0(unsigned int x) {
- return x;
-}
-
-signed char implicitcast_1(unsigned int x) {
- return x;
-}
-
-unsigned char implicitcast_2(signed int x) {
- return x;
-}
-
-signed char implicitcast_3(signed int x) {
- return x;
-}
-
-//----------------------------------------------------------------------------//
-
-unsigned char cstylecast_0(unsigned int x) {
- return (unsigned char)x;
-}
-
-signed char cstylecast_1(unsigned int x) {
- return (signed char)x;
-}
-
-unsigned char cstylecast_2(signed int x) {
- return (unsigned char)x;
-}
-
-signed char cstylecast_3(signed int x) {
- return (signed char)x;
-}
-
-//----------------------------------------------------------------------------//
-
-unsigned char cxxstaticcast_0(unsigned int x) {
- return static_cast<unsigned char>(x);
-}
-
-signed char cxxstaticcast_1(unsigned int x) {
- return static_cast<signed char>(x);
-}
-
-unsigned char cxxstaticcast_2(signed int x) {
- return static_cast<unsigned char>(x);
-}
-
-signed char cxxstaticcast_3(signed int x) {
- return static_cast<signed char>(x);
-}
-
-//----------------------------------------------------------------------------//
-
-using UnsignedChar = unsigned char;
-using SignedChar = signed char;
-using UnsignedInt = unsigned int;
-using SignedInt = signed int;
-
-UnsignedChar cxxfunctionalcast_0(UnsignedInt x) {
- return UnsignedChar(x);
-}
-
-SignedChar cxxfunctionalcast_1(UnsignedInt x) {
- return SignedChar(x);
-}
-
-UnsignedChar cxxfunctionalcast_2(SignedInt x) {
- return UnsignedChar(x);
-}
-
-SignedChar cxxfunctionalcast_3(SignedInt x) {
- return SignedChar(x);
-}
-
-// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
-// using --filters=ImplicitCastExpr,CStyleCastExpr,CXXStaticCastExpr,CXXFunctionalCastExpr
-
-// CHECK: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned char"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralCast",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "signed char"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralCast",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned char"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralCast",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "signed char"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralCast",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK: "kind": "CStyleCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned char"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "NoOp",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned char"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralCast",
-// CHECK-NEXT: "isPartOfExplicitCast": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "isPartOfExplicitCast": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK: "kind": "CStyleCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "signed char"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "NoOp",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "signed char"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralCast",
-// CHECK-NEXT: "isPartOfExplicitCast": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "isPartOfExplicitCast": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK: "kind": "CStyleCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned char"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "NoOp",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned char"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralCast",
-// CHECK-NEXT: "isPartOfExplicitCast": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "isPartOfExplicitCast": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 25,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK: "kind": "CStyleCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "signed char"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "NoOp",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "signed char"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralCast",
-// CHECK-NEXT: "isPartOfExplicitCast": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "isPartOfExplicitCast": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK: "kind": "CXXStaticCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 11
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 38,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned char"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "NoOp",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 37,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 37,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned char"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralCast",
-// CHECK-NEXT: "isPartOfExplicitCast": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 37,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 37,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "isPartOfExplicitCast": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 37,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 37,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK: "kind": "CXXStaticCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 11
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 36,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "signed char"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "NoOp",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 35,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 35,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "signed char"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralCast",
-// CHECK-NEXT: "isPartOfExplicitCast": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 35,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 35,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "isPartOfExplicitCast": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 35,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 35,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK: "kind": "CXXStaticCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 11
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 38,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned char"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "NoOp",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 37,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 37,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "unsigned char"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralCast",
-// CHECK-NEXT: "isPartOfExplicitCast": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 37,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 37,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "isPartOfExplicitCast": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 37,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 37,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK: "kind": "CXXStaticCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 11
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 36,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "signed char"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "NoOp",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 35,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 35,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "signed char"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralCast",
-// CHECK-NEXT: "isPartOfExplicitCast": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 35,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 35,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "isPartOfExplicitCast": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 35,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 35,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "qualType": "int"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK: "kind": "CXXFunctionalCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 12
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "unsigned char",
-// CHECK-NEXT: "qualType": "UnsignedChar",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "NoOp",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "unsigned char",
-// CHECK-NEXT: "qualType": "UnsignedChar",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralCast",
-// CHECK-NEXT: "isPartOfExplicitCast": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "unsigned int",
-// CHECK-NEXT: "qualType": "UnsignedInt",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "isPartOfExplicitCast": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "unsigned int",
-// CHECK-NEXT: "qualType": "UnsignedInt",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "unsigned int",
-// CHECK-NEXT: "qualType": "UnsignedInt",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK: "kind": "CXXFunctionalCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "signed char",
-// CHECK-NEXT: "qualType": "SignedChar",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "NoOp",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "signed char",
-// CHECK-NEXT: "qualType": "SignedChar",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralCast",
-// CHECK-NEXT: "isPartOfExplicitCast": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "unsigned int",
-// CHECK-NEXT: "qualType": "UnsignedInt",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "isPartOfExplicitCast": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "unsigned int",
-// CHECK-NEXT: "qualType": "UnsignedInt",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "unsigned int",
-// CHECK-NEXT: "qualType": "UnsignedInt",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK: "kind": "CXXFunctionalCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 12
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 24,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "unsigned char",
-// CHECK-NEXT: "qualType": "UnsignedChar",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "NoOp",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "unsigned char",
-// CHECK-NEXT: "qualType": "UnsignedChar",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralCast",
-// CHECK-NEXT: "isPartOfExplicitCast": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "int",
-// CHECK-NEXT: "qualType": "SignedInt",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "isPartOfExplicitCast": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 23,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "int",
-// CHECK-NEXT: "qualType": "SignedInt",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "int",
-// CHECK-NEXT: "qualType": "SignedInt",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-
-// CHECK: "kind": "CXXFunctionalCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 10,
-// CHECK-NEXT: "tokLen": 10
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 22,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "signed char",
-// CHECK-NEXT: "qualType": "SignedChar",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "NoOp",
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "signed char",
-// CHECK-NEXT: "qualType": "SignedChar",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "IntegralCast",
-// CHECK-NEXT: "isPartOfExplicitCast": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ImplicitCastExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "int",
-// CHECK-NEXT: "qualType": "SignedInt",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "prvalue",
-// CHECK-NEXT: "castKind": "LValueToRValue",
-// CHECK-NEXT: "isPartOfExplicitCast": true,
-// CHECK-NEXT: "inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "DeclRefExpr",
-// CHECK-NEXT: "range": {
-// CHECK-NEXT: "begin": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: },
-// CHECK-NEXT: "end": {
-// CHECK-NEXT: "offset": {{[0-9]+}},
-// CHECK-NEXT: "col": 21,
-// CHECK-NEXT: "tokLen": 1
-// CHECK-NEXT: }
-// CHECK-NEXT: },
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "int",
-// CHECK-NEXT: "qualType": "SignedInt",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: },
-// CHECK-NEXT: "valueCategory": "lvalue",
-// CHECK-NEXT: "referencedDecl": {
-// CHECK-NEXT: "id": "0x{{.*}}",
-// CHECK-NEXT: "kind": "ParmVarDecl",
-// CHECK-NEXT: "name": "x",
-// CHECK-NEXT: "type": {
-// CHECK-NEXT: "desugaredQualType": "int",
-// CHECK-NEXT: "qualType": "SignedInt",
-// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
-// CHECK-NEXT: ]
-// CHECK-NEXT: }
+// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsyntax-only -ast-dump=json %s | FileCheck %s
+
+unsigned char implicitcast_0(unsigned int x) {
+ return x;
+}
+
+signed char implicitcast_1(unsigned int x) {
+ return x;
+}
+
+unsigned char implicitcast_2(signed int x) {
+ return x;
+}
+
+signed char implicitcast_3(signed int x) {
+ return x;
+}
+
+//----------------------------------------------------------------------------//
+
+unsigned char cstylecast_0(unsigned int x) {
+ return (unsigned char)x;
+}
+
+signed char cstylecast_1(unsigned int x) {
+ return (signed char)x;
+}
+
+unsigned char cstylecast_2(signed int x) {
+ return (unsigned char)x;
+}
+
+signed char cstylecast_3(signed int x) {
+ return (signed char)x;
+}
+
+//----------------------------------------------------------------------------//
+
+unsigned char cxxstaticcast_0(unsigned int x) {
+ return static_cast<unsigned char>(x);
+}
+
+signed char cxxstaticcast_1(unsigned int x) {
+ return static_cast<signed char>(x);
+}
+
+unsigned char cxxstaticcast_2(signed int x) {
+ return static_cast<unsigned char>(x);
+}
+
+signed char cxxstaticcast_3(signed int x) {
+ return static_cast<signed char>(x);
+}
+
+//----------------------------------------------------------------------------//
+
+using UnsignedChar = unsigned char;
+using SignedChar = signed char;
+using UnsignedInt = unsigned int;
+using SignedInt = signed int;
+
+UnsignedChar cxxfunctionalcast_0(UnsignedInt x) {
+ return UnsignedChar(x);
+}
+
+SignedChar cxxfunctionalcast_1(UnsignedInt x) {
+ return SignedChar(x);
+}
+
+UnsignedChar cxxfunctionalcast_2(SignedInt x) {
+ return UnsignedChar(x);
+}
+
+SignedChar cxxfunctionalcast_3(SignedInt x) {
+ return SignedChar(x);
+}
+
+// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
+// using --filters=ImplicitCastExpr,CStyleCastExpr,CXXStaticCastExpr,CXXFunctionalCastExpr
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralCast",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "signed char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralCast",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralCast",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "signed char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralCast",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CStyleCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "NoOp",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralCast",
+// CHECK-NEXT: "isPartOfExplicitCast": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "isPartOfExplicitCast": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CStyleCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "signed char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "NoOp",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "signed char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralCast",
+// CHECK-NEXT: "isPartOfExplicitCast": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "isPartOfExplicitCast": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CStyleCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "NoOp",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralCast",
+// CHECK-NEXT: "isPartOfExplicitCast": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "isPartOfExplicitCast": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 25,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CStyleCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "signed char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "NoOp",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "signed char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralCast",
+// CHECK-NEXT: "isPartOfExplicitCast": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "isPartOfExplicitCast": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXStaticCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 11
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 38,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "NoOp",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 37,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 37,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralCast",
+// CHECK-NEXT: "isPartOfExplicitCast": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 37,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 37,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "isPartOfExplicitCast": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 37,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 37,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXStaticCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 11
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 36,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "signed char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "NoOp",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 35,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 35,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "signed char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralCast",
+// CHECK-NEXT: "isPartOfExplicitCast": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 35,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 35,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "isPartOfExplicitCast": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 35,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 35,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXStaticCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 11
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 38,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "NoOp",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 37,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 37,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "unsigned char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralCast",
+// CHECK-NEXT: "isPartOfExplicitCast": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 37,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 37,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "isPartOfExplicitCast": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 37,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 37,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXStaticCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 11
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 36,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "signed char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "NoOp",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 35,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 35,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "signed char"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralCast",
+// CHECK-NEXT: "isPartOfExplicitCast": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 35,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 35,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "isPartOfExplicitCast": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 35,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 35,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "qualType": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXFunctionalCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 12
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "unsigned char",
+// CHECK-NEXT: "qualType": "UnsignedChar",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "NoOp",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "unsigned char",
+// CHECK-NEXT: "qualType": "UnsignedChar",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralCast",
+// CHECK-NEXT: "isPartOfExplicitCast": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "unsigned int",
+// CHECK-NEXT: "qualType": "UnsignedInt",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "isPartOfExplicitCast": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "unsigned int",
+// CHECK-NEXT: "qualType": "UnsignedInt",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "unsigned int",
+// CHECK-NEXT: "qualType": "UnsignedInt",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXFunctionalCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "signed char",
+// CHECK-NEXT: "qualType": "SignedChar",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "NoOp",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "signed char",
+// CHECK-NEXT: "qualType": "SignedChar",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralCast",
+// CHECK-NEXT: "isPartOfExplicitCast": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "unsigned int",
+// CHECK-NEXT: "qualType": "UnsignedInt",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "isPartOfExplicitCast": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "unsigned int",
+// CHECK-NEXT: "qualType": "UnsignedInt",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "unsigned int",
+// CHECK-NEXT: "qualType": "UnsignedInt",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "unsigned",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXFunctionalCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 12
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 24,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "unsigned char",
+// CHECK-NEXT: "qualType": "UnsignedChar",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "NoOp",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "unsigned char",
+// CHECK-NEXT: "qualType": "UnsignedChar",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralCast",
+// CHECK-NEXT: "isPartOfExplicitCast": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "int",
+// CHECK-NEXT: "qualType": "SignedInt",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "isPartOfExplicitCast": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 23,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "int",
+// CHECK-NEXT: "qualType": "SignedInt",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "int",
+// CHECK-NEXT: "qualType": "SignedInt",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+
+
+// CHECK-NOT: {{^}}Dumping
+// CHECK: "kind": "CXXFunctionalCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 10,
+// CHECK-NEXT: "tokLen": 10
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 22,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "signed char",
+// CHECK-NEXT: "qualType": "SignedChar",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "NoOp",
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "signed char",
+// CHECK-NEXT: "qualType": "SignedChar",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "IntegralCast",
+// CHECK-NEXT: "isPartOfExplicitCast": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "int",
+// CHECK-NEXT: "qualType": "SignedInt",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "prvalue",
+// CHECK-NEXT: "castKind": "LValueToRValue",
+// CHECK-NEXT: "isPartOfExplicitCast": true,
+// CHECK-NEXT: "inner": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "DeclRefExpr",
+// CHECK-NEXT: "range": {
+// CHECK-NEXT: "begin": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: },
+// CHECK-NEXT: "end": {
+// CHECK-NEXT: "offset": {{[0-9]+}},
+// CHECK-NEXT: "col": 21,
+// CHECK-NEXT: "tokLen": 1
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "int",
+// CHECK-NEXT: "qualType": "SignedInt",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: },
+// CHECK-NEXT: "valueCategory": "lvalue",
+// CHECK-NEXT: "referencedDecl": {
+// CHECK-NEXT: "id": "0x{{.*}}",
+// CHECK-NEXT: "kind": "ParmVarDecl",
+// CHECK-NEXT: "name": "x",
+// CHECK-NEXT: "type": {
+// CHECK-NEXT: "desugaredQualType": "int",
+// CHECK-NEXT: "qualType": "SignedInt",
+// CHECK-NEXT: "typeAliasDeclId": "0x{{.*}}"
+// CHECK-NEXT: }
+// CHECK-NEXT: },
+// CHECK-NEXT: "qualType": {
+// CHECK-NEXT: "refId": "0x{{.*}}",
+// CHECK-NEXT: "qualDetails": [
+// CHECK-NEXT: "signed",
+// CHECK-NEXT: "integer"
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
+// CHECK-NEXT: ]
+// CHECK-NEXT: }
diff --git a/clang/test/AST/new-unknown-type.cpp b/clang/test/AST/new-unknown-type.cpp
index e7dd3c90145d2..4c5b3d95b2896 100644
--- a/clang/test/AST/new-unknown-type.cpp
+++ b/clang/test/AST/new-unknown-type.cpp
@@ -22,4 +22,4 @@ namespace b {
static b::Bar bar;
// CHECK: `-VarDecl 0x{{[^ ]*}} <line:23:1, col:15> col:15 bar 'b::Bar' static callinit
-// CHECK-NEXT: `-CXXConstructExpr 0x{{[^ ]*}} <col:15> 'b::Bar' 'void () noexcept'
+// CHECK-NEXT: |-CXXConstructExpr 0x{{[^ ]*}} <col:15> 'b::Bar' 'void () noexcept'
diff --git a/clang/test/AST/nrvo.c b/clang/test/AST/nrvo.c
index 078445cd972c4..f837510f09ead 100644
--- a/clang/test/AST/nrvo.c
+++ b/clang/test/AST/nrvo.c
@@ -9,7 +9,7 @@ struct A f1(void) {
// CHECK-NEXT: DeclStmt 0x{{[^ ]*}} <line:[[@LINE-1]]:3, col:13>
// CHECK-NEXT: VarDecl 0x{{[^ ]*}} <col:3, col:12> col:12 used a 'struct A' nrvo
return a;
- // CHECK-NEXT: ReturnStmt 0x{{[^ ]*}} <line:[[@LINE-1]]:3, col:10>
+ // CHECK: ReturnStmt 0x{{[^ ]*}} <line:[[@LINE-1]]:3, col:10>
// CHECK-NEXT: ImplicitCastExpr 0x{{[^ ]*}} <col:10> 'struct A' <LValueToRValue>
// CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:10> 'struct A' lvalue Var 0x{{[^ ]*}} 'a' 'struct A'
}
@@ -22,7 +22,7 @@ void f2(void) {
// CHECK-NEXT: DeclStmt 0x{{[^ ]*}} <line:[[@LINE-1]]:5, col:15>
// CHECK-NEXT: VarDecl 0x{{[^ ]*}} <col:5, col:14> col:14 used a 'struct A' nrvo
return a;
- // CHECK-NEXT: ReturnStmt 0x{{[^ ]*}} <line:[[@LINE-1]]:5, col:12>
+ // CHECK: ReturnStmt 0x{{[^ ]*}} <line:[[@LINE-1]]:5, col:12>
// CHECK-NEXT: ImplicitCastExpr 0x{{[^ ]*}} <col:12> 'struct A' <LValueToRValue>
// CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:12> 'struct A' lvalue Var 0x{{[^ ]*}} 'a' 'struct A'
}();
diff --git a/clang/test/AST/pr43983.cpp b/clang/test/AST/pr43983.cpp
index f11df5545f286..2c7b1a4cf38ee 100644
--- a/clang/test/AST/pr43983.cpp
+++ b/clang/test/AST/pr43983.cpp
@@ -9,7 +9,7 @@
struct B { _Alignas(64) struct { int b; }; };
-// CHECK: | `-AlignedAttr {{.*}} <col:12> _Alignas
+// CHECK: | `-attrDetails: AlignedAttr {{.*}} <col:12> _Alignas
// CHECK-NEXT: | `-ConstantExpr {{.*}} <col:21> 'int'
// CHECK-NEXT: | |-value: Int 64
// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:21> 'int' 64
diff --git a/clang/test/AST/pragma-attribute-cxx-subject-match-rules.cpp b/clang/test/AST/pragma-attribute-cxx-subject-match-rules.cpp
index 37283c8ad90cb..307e9c06b680a 100644
--- a/clang/test/AST/pragma-attribute-cxx-subject-match-rules.cpp
+++ b/clang/test/AST/pragma-attribute-cxx-subject-match-rules.cpp
@@ -17,28 +17,28 @@
namespace testNamespace {
// CHECK-NAMESPACE: NamespaceDecl{{.*}} testNamespace
-// CHECK-NAMESPACE-NEXT: AnnotateAttr{{.*}} "test"
+// CHECK-NAMESPACE: AnnotateAttr{{.*}} "test"
typedef int testTypedef;
// CHECK-TYPE_ALIAS: TypedefDecl{{.*}} testTypedef
-// CHECK-TYPE_ALIAS-NEXT: BuiltinType
-// CHECK-TYPE_ALIAS-NEXT: AnnotateAttr{{.*}} "test"
+// CHECK-TYPE_ALIAS: BuiltinType
+// CHECK-TYPE_ALIAS: AnnotateAttr{{.*}} "test"
using testTypeAlias = double;
// CHECK-TYPE_ALIAS: TypeAliasDecl{{.*}} testTypeAlias
-// CHECK-TYPE_ALIAS-NEXT: BuiltinType
-// CHECK-TYPE_ALIAS-NEXT: AnnotateAttr{{.*}} "test"
+// CHECK-TYPE_ALIAS: BuiltinType
+// CHECK-TYPE_ALIAS: AnnotateAttr{{.*}} "test"
enum testEnum {
testEnumCase1,
testEnumCase2
};
// CHECK-ENUM: EnumDecl{{.*}} testEnum
-// CHECK-ENUM-NEXT: AnnotateAttr{{.*}} "test"
+// CHECK-ENUM: AnnotateAttr{{.*}} "test"
// CHECK-ENUM_CONSTANT: EnumConstantDecl{{.*}} testEnumCase1
-// CHECK-ENUM_CONSTANT-NEXT: AnnotateAttr{{.*}} "test"
+// CHECK-ENUM_CONSTANT: AnnotateAttr{{.*}} "test"
// CHECK-ENUM_CONSTANT: EnumConstantDecl{{.*}} testEnumCase2
-// CHECK-ENUM_CONSTANT-NEXT: AnnotateAttr{{.*}} "test"
+// CHECK-ENUM_CONSTANT: AnnotateAttr{{.*}} "test"
struct testStructRecord {
int testStructRecordField;
@@ -48,7 +48,7 @@ struct testStructRecord {
// CHECK-RECORD_UNLESS_IS_UNION-LABEL: CXXRecordDecl{{.*}} testStructRecord
// CHECK-RECORD_UNLESS_IS_UNION: AnnotateAttr{{.*}} "test"
// CHECK-FIELD: FieldDecl{{.*}} testStructRecordField
-// CHECK-FIELD-NEXT: AnnotateAttr{{.*}} "test"
+// CHECK-FIELD: AnnotateAttr{{.*}} "test"
class testClassRecord {
int testClassRecordField;
@@ -58,7 +58,7 @@ class testClassRecord {
// CHECK-RECORD_UNLESS_IS_UNION-LABEL: CXXRecordDecl{{.*}} testClassRecord
// CHECK-RECORD_UNLESS_IS_UNION: AnnotateAttr{{.*}} "test"
// CHECK-FIELD: FieldDecl{{.*}} testClassRecordField
-// CHECK-FIELD-NEXT: AnnotateAttr{{.*}} "test"
+// CHECK-FIELD: AnnotateAttr{{.*}} "test"
union testUnionRecord {
int testUnionRecordField;
@@ -68,26 +68,26 @@ union testUnionRecord {
// CHECK-RECORD_UNLESS_IS_UNION-LABEL: CXXRecordDecl{{.*}} testUnionRecord
// CHECK-RECORD_UNLESS_IS_UNION-NOT: AnnotateAttr{{.*}} "test"
// CHECK-FIELD: FieldDecl{{.*}} testUnionRecordField
-// CHECK-FIELD-NEXT: AnnotateAttr{{.*}} "test"
+// CHECK-FIELD: AnnotateAttr{{.*}} "test"
// CHECK-RECORD_UNLESS_IS_UNION-LABEL: CXXRecordDecl
void testFunctionDecl();
// CHECK-FUNCTION: FunctionDecl{{.*}} testFunctionDecl
-// CHECK-FUNCTION-NEXT: AnnotateAttr{{.*}} "test"
+// CHECK-FUNCTION: AnnotateAttr{{.*}} "test"
// CHECK-HAS_TYPE_FUNCTION_TYPE: FunctionDecl{{.*}} testFunctionDecl
-// CHECK-HAS_TYPE_FUNCTION_TYPE-NEXT: AnnotateAttr{{.*}} "test"
+// CHECK-HAS_TYPE_FUNCTION_TYPE: AnnotateAttr{{.*}} "test"
void testFunctionDecl() { }
// CHECK-FUNCTION: FunctionDecl{{.*}} testFunctionDecl
-// CHECK-FUNCTION-NEXT: CompoundStmt
-// CHECK-FUNCTION-NEXT: AnnotateAttr{{.*}} "test"
+// CHECK-FUNCTION: CompoundStmt
+// CHECK-FUNCTION: AnnotateAttr{{.*}} "test"
// CHECK-HAS_TYPE_FUNCTION_TYPE: FunctionDecl{{.*}} testFunctionDecl
-// CHECK-HAS_TYPE_FUNCTION_TYPE-NEXT: CompoundStmt
-// CHECK-HAS_TYPE_FUNCTION_TYPE-NEXT: AnnotateAttr{{.*}} "test"
+// CHECK-HAS_TYPE_FUNCTION_TYPE: CompoundStmt
+// CHECK-HAS_TYPE_FUNCTION_TYPE: AnnotateAttr{{.*}} "test"
void (*testFunctionVar)();
// CHECK-HAS_TYPE_FUNCTION_TYPE: VarDecl{{.*}} testFunctionVar
-// CHECK-HAS_TYPE_FUNCTION_TYPE-NEXT: AnnotateAttr{{.*}} "test"
+// CHECK-HAS_TYPE_FUNCTION_TYPE: AnnotateAttr{{.*}} "test"
// 'function' should not apply to variables with a function type!
// CHECK-FUNCTION: VarDecl{{.*}} testFunctionVar
// CHECK-FUNCTION-NOT: AnnotateAttr{{.*}} "test"
@@ -99,69 +99,69 @@ class testMethods {
void testMethods::testMethod() { }
void testFunctionNotMethod();
// CHECK-FUNCTION-LABEL: CXXConstructorDecl{{.*}} testMethods
-// CHECK-FUNCTION-NEXT: AnnotateAttr{{.*}} "test"
+// CHECK-FUNCTION: AnnotateAttr{{.*}} "test"
// CHECK-FUNCTION_IS_MEMBER: CXXConstructorDecl{{.*}} testMethods
-// CHECK-FUNCTION_IS_MEMBER-NEXT: AnnotateAttr{{.*}} "test"
+// CHECK-FUNCTION_IS_MEMBER: AnnotateAttr{{.*}} "test"
// CHECK-HAS_TYPE_FUNCTION_TYPE: CXXConstructorDecl{{.*}} testMethods
-// CHECK-HAS_TYPE_FUNCTION_TYPE-NEXT: AnnotateAttr{{.*}} "test"
+// CHECK-HAS_TYPE_FUNCTION_TYPE: AnnotateAttr{{.*}} "test"
// CHECK-FUNCTION: CXXMethodDecl{{.*}} testMethod
-// CHECK-FUNCTION-NEXT: AnnotateAttr{{.*}} "test"
+// CHECK-FUNCTION: AnnotateAttr{{.*}} "test"
// CHECK-FUNCTION_IS_MEMBER: CXXMethodDecl{{.*}} testMethod
-// CHECK-FUNCTION_IS_MEMBER-NEXT: AnnotateAttr{{.*}} "test"
+// CHECK-FUNCTION_IS_MEMBER: AnnotateAttr{{.*}} "test"
// CHECK-HAS_TYPE_FUNCTION_TYPE: CXXMethodDecl{{.*}} testMethod
-// CHECK-HAS_TYPE_FUNCTION_TYPE-NEXT: AnnotateAttr{{.*}} "test"
+// CHECK-HAS_TYPE_FUNCTION_TYPE: AnnotateAttr{{.*}} "test"
// CHECK-FUNCTION: CXXMethodDecl{{.*}} testMethod
-// CHECK-FUNCTION-NEXT: CompoundStmt
-// CHECK-FUNCTION-NEXT: AnnotateAttr{{.*}} "test"
+// CHECK-FUNCTION: CompoundStmt
+// CHECK-FUNCTION: AnnotateAttr{{.*}} "test"
// CHECK-FUNCTION_IS_MEMBER: CXXMethodDecl{{.*}} testMethod
-// CHECK-FUNCTION_IS_MEMBER-NEXT: CompoundStmt
-// CHECK-CXX_METHOD-NEXT: AnnotateAttr{{.*}} "test"
+// CHECK-FUNCTION_IS_MEMBER: CompoundStmt
+// CHECK-CXX_METHOD: AnnotateAttr{{.*}} "test"
// CHECK-HAS_TYPE_FUNCTION_TYPE: CXXMethodDecl{{.*}} testMethod
-// CHECK-HAS_TYPE_FUNCTION_TYPE-NEXT: CompoundStmt
-// CHECK-HAS_TYPE_FUNCTION_TYPE-NEXT: AnnotateAttr{{.*}} "test"
+// CHECK-HAS_TYPE_FUNCTION_TYPE: CompoundStmt
+// CHECK-HAS_TYPE_FUNCTION_TYPE: AnnotateAttr{{.*}} "test"
// CHECK-FUNCTION_IS_MEMBER: FunctionDecl{{.*}} testFunctionNotMethod
// CHECK-FUNCTION_IS_MEMBER-NOT: AnnotateAttr{{.*}} "test"
int testVariable;
// CHECK-VARIABLE: VarDecl{{.*}} testVariable
-// CHECK-VARIABLE-NEXT: AnnotateAttr{{.*}} "test"
+// CHECK-VARIABLE: AnnotateAttr{{.*}} "test"
// CHECK-VARIABLE_IS_GLOBAL-LABEL: VarDecl{{.*}} testVariable
-// CHECK-VARIABLE_IS_GLOBAL-NEXT: AnnotateAttr{{.*}} "test"
+// CHECK-VARIABLE_IS_GLOBAL: AnnotateAttr{{.*}} "test"
// CHECK-VARIABLE_IS_PARAMETER-LABEL: VarDecl{{.*}} testVariable
// CHECK-VARIABLE_IS_PARAMETER-NOT: AnnotateAttr{{.*}} "test"
// CHECK-VARIABLE_UNLESS_IS_PARAMETER-LABEL: VarDecl{{.*}} testVariable
-// CHECK-VARIABLE_UNLESS_IS_PARAMETER-NEXT: AnnotateAttr{{.*}} "test"
+// CHECK-VARIABLE_UNLESS_IS_PARAMETER: AnnotateAttr{{.*}} "test"
void testVarFunction(int testParam) {
// CHECK-VARIABLE: VarDecl{{.*}} testParam
-// CHECK-VARIABLE-NEXT: AnnotateAttr{{.*}} "test"
+// CHECK-VARIABLE: AnnotateAttr{{.*}} "test"
// CHECK-VARIABLE_IS_GLOBAL-LABEL: VarDecl{{.*}} testParam
// CHECK-VARIABLE_IS_GLOBAL-NOT: AnnotateAttr{{.*}} "test"
// CHECK-VARIABLE_IS_PARAMETER-LABEL: VarDecl{{.*}} testParam
-// CHECK-VARIABLE_IS_PARAMETER-NEXT: AnnotateAttr{{.*}} "test"
+// CHECK-VARIABLE_IS_PARAMETER: AnnotateAttr{{.*}} "test"
// CHECK-VARIABLE_UNLESS_IS_PARAMETER-LABEL: VarDecl{{.*}} testParam
// CHECK-VARIABLE_UNLESS_IS_PARAMETER-NOT: AnnotateAttr{{.*}} "test"
int testLocalVariable;
// CHECK-VARIABLE: VarDecl{{.*}} testLocalVariable
-// CHECK-VARIABLE-NEXT: AnnotateAttr{{.*}} "test"
+// CHECK-VARIABLE: AnnotateAttr{{.*}} "test"
// CHECK-VARIABLE_IS_GLOBAL-LABEL: VarDecl{{.*}} testLocalVariable
// CHECK-VARIABLE_IS_GLOBAL-NOT: AnnotateAttr{{.*}} "test"
// CHECK-VARIABLE_IS_PARAMETER-LABEL: VarDecl{{.*}} testLocalVariable
// CHECK-VARIABLE_IS_PARAMETER-NOT: AnnotateAttr{{.*}} "test"
// CHECK-VARIABLE_UNLESS_IS_PARAMETER-LABEL: VarDecl{{.*}} testLocalVariable
-// CHECK-VARIABLE_UNLESS_IS_PARAMETER-NEXT: AnnotateAttr{{.*}} "test"
+// CHECK-VARIABLE_UNLESS_IS_PARAMETER: AnnotateAttr{{.*}} "test"
}
class testVarClass {
static int testStaticVar;
};
// CHECK-VARIABLE: VarDecl{{.*}} testStaticVar
-// CHECK-VARIABLE-NEXT: AnnotateAttr{{.*}} "test"
+// CHECK-VARIABLE: AnnotateAttr{{.*}} "test"
// CHECK-VARIABLE_IS_GLOBAL-LABEL: VarDecl{{.*}} testStaticVar
-// CHECK-VARIABLE_IS_GLOBAL-NEXT: AnnotateAttr{{.*}} "test"
+// CHECK-VARIABLE_IS_GLOBAL: AnnotateAttr{{.*}} "test"
// CHECK-VARIABLE_IS_PARAMETER-LABEL: VarDecl{{.*}} testStaticVar
// CHECK-VARIABLE_IS_PARAMETER-NOT: AnnotateAttr{{.*}} "test"
// CHECK-VARIABLE_UNLESS_IS_PARAMETER-LABEL: VarDecl{{.*}} testStaticVar
-// CHECK-VARIABLE_UNLESS_IS_PARAMETER-NEXT: AnnotateAttr{{.*}} "test"
+// CHECK-VARIABLE_UNLESS_IS_PARAMETER: AnnotateAttr{{.*}} "test"
}
diff --git a/clang/test/AST/pragma-attribute-objc-subject-match-rules.m b/clang/test/AST/pragma-attribute-objc-subject-match-rules.m
index ef5e6bf783c6c..34026ba2cf869 100644
--- a/clang/test/AST/pragma-attribute-objc-subject-match-rules.m
+++ b/clang/test/AST/pragma-attribute-objc-subject-match-rules.m
@@ -60,18 +60,18 @@ + (void) testClassMethod { }
@end
// CHECK-OBJC_METHOD: ObjCMethodDecl{{.*}} testInstanceMethod
// CHECK-OBJC_METHOD-NEXT: ImplicitParamDecl
-// CHECK-OBJC_METHOD-NEXT: ImplicitParamDecl
-// CHECK-OBJC_METHOD-NEXT: CompoundStmt
+// CHECK-OBJC_METHOD: ImplicitParamDecl
+// CHECK-OBJC_METHOD: CompoundStmt
// CHECK-OBJC_METHOD-NEXT: AnnotateAttr{{.*}} "test"
// CHECK-OBJC_METHOD: ObjCMethodDecl{{.*}} testClassMethod
// CHECK-OBJC_METHOD-NEXT: ImplicitParamDecl
-// CHECK-OBJC_METHOD-NEXT: ImplicitParamDecl
-// CHECK-OBJC_METHOD-NEXT: CompoundStmt
+// CHECK-OBJC_METHOD: ImplicitParamDecl
+// CHECK-OBJC_METHOD: CompoundStmt
// CHECK-OBJC_METHOD-NEXT: AnnotateAttr{{.*}} "test"
// CHECK-OBJC_METHOD_IS_INSTANCE-LABEL: ObjCMethodDecl{{.*}} testInstanceMethod
// CHECK-OBJC_METHOD_IS_INSTANCE-NEXT: ImplicitParamDecl
-// CHECK-OBJC_METHOD_IS_INSTANCE-NEXT: ImplicitParamDecl
-// CHECK-OBJC_METHOD_IS_INSTANCE-NEXT: CompoundStmt
+// CHECK-OBJC_METHOD_IS_INSTANCE: ImplicitParamDecl
+// CHECK-OBJC_METHOD_IS_INSTANCE: CompoundStmt
// CHECK-OBJC_METHOD_IS_INSTANCE-NEXT: AnnotateAttr{{.*}} "test"
// CHECK-OBJC_METHOD_IS_INSTANCE: ObjCMethodDecl{{.*}} testClassMethod
// CHECK-OBJC_METHOD_IS_INSTANCE-NOT: AnnotateAttr{{.*}} "test"
diff --git a/clang/test/AST/pragma-multiple-attributes-declspec.cpp b/clang/test/AST/pragma-multiple-attributes-declspec.cpp
index 60722b3c886ab..fd3f80011a4f4 100644
--- a/clang/test/AST/pragma-multiple-attributes-declspec.cpp
+++ b/clang/test/AST/pragma-multiple-attributes-declspec.cpp
@@ -4,5 +4,5 @@
void func1();
#pragma clang attribute pop
// CHECK: FunctionDecl {{.*}} func1
-// CHECK-NEXT: DLLExportAttr {{.*}}
-// CHECK-NEXT: NoInlineAttr {{.*}}
+// CHECK-NEXT: attrDetails: DLLExportAttr {{.*}}
+// CHECK-NEXT: attrDetails: NoInlineAttr {{.*}}
diff --git a/clang/test/AST/pragma-multiple-attributes.cpp b/clang/test/AST/pragma-multiple-attributes.cpp
index db3824913728c..244a2abf4991a 100644
--- a/clang/test/AST/pragma-multiple-attributes.cpp
+++ b/clang/test/AST/pragma-multiple-attributes.cpp
@@ -4,12 +4,12 @@
int var1;
#pragma clang attribute pop
// CHECK: VarDecl {{.*}} var1
-// CHECK-NEXT: DisableSanitizerInstrumentationAttr {{.*}}
-// CHECK-NEXT: AnnotateAttr {{.*}} "test1"
+// CHECK: attrDetails: DisableSanitizerInstrumentationAttr {{.*}}
+// CHECK-NEXT: attrDetails: AnnotateAttr {{.*}} "test1"
#pragma clang attribute push ([[clang::disable_sanitizer_instrumentation, clang::annotate("test2")]], apply_to=variable(is_global))
int var2;
#pragma clang attribute pop
// CHECK: VarDecl {{.*}} var2
-// CHECK-NEXT: DisableSanitizerInstrumentationAttr {{.*}}
-// CHECK-NEXT: AnnotateAttr {{.*}} "test2"
+// CHECK: attrDetails: DisableSanitizerInstrumentationAttr {{.*}}
+// CHECK-NEXT: attrDetails: AnnotateAttr {{.*}} "test2"
More information about the cfe-commits
mailing list